私の問題では、pthread_create()を使用してpthreadを作成します(myThreadなど)。
これらは両方とも、myThreadがソケットからの読み取りを停止するように指示するために、メインスレッドに対して「done」という共通の変数を共有します。
私のpthreadには、ループがあります。
// done is a common variable
while (!done && socket->read(&buffer) == OK) {
// do something....
}
時々、myThreadにソケットからの読み取りを停止するように指示したいので、次のようにします。
done = true;
void *test;
pthread_join(myThread, &test);
これにより競合状態が発生しますか?つまり、myThreadは、読み取り呼び出しでブロックされる前に、メインスレッドが「done」の値を更新するのを認識しませんか?