2012-03-08 6 views
0

vs2008でrand_r()を使用すると、1エラーになる - 識別子が未定義で、代わりにrand()を使用できますか? (マルチスレッドプログラミング作業) ありがとうございます。rand_r():vs2008

+1

ひとつ質問してください。 –

+0

私はこれに注意を払うとにかく、この "警告"ありがとう! – Junling

+0

*ノックノック*、答えを受け入れるように気をつけますか? –

答えて

1

this forum threadによると、randは、VC++を使用するときに再入可能性について心配する必要なく使用できます。あなたはマルチスレッドの目的のためにこれを必要とする場合には

#include <cstdlib> 

する必要があると思います

+0

良い参照ですが、彼はマルチスレッドのためにこれが必要だとは言及していませんでした。 –

3

、またヨアヒムPileborgsの答えを参照してください。

いずれの場合でも、C++'s new RNGsのいずれかを使用することができます。これはオブジェクト形式で使用され、シーケンスが保証されています。質問ごと


man 3 rand_r

+0

rand_rはPOSIX(かつては使われていません)ですが、VCが持っていることは本当に保証されていません。 – PlasmaHH

+0

+1はC++ 11 RNGです。 OpenMPのパフォーマンスの問題を解決しました(これらのRNGはスレッドローカルです) – netvope