次の 2 つのいずれかを行うことができます。1) ミューテックスを作成し、ミューテックス関数を介してロックします (MSDN リファレンスを参照) 2) ロックのブール値 true を作成または利用します (つまり、コピー、変更、または使用ロック解除の場合は false (親スレッドまたはマスター スレッドが処理中)。そうすれば、次のことができます。
int someThread1(threadData *data)
{
data->lock = true;
/* Do data functions */
data->lock = false;
return 1; //Or whatever you want it to return after checking data
}
int someThread2(threadData *data)
{
data->lock = true;
/* Do data functions */
data->lock = false;
return 1; //Or whatever you want it to return after checking data
}
void *masterThread(void *data)
{
ThreadData * t_Data = (ThreadData*)data;
do
{
if(t_Data->lock == false)
{
/*Do normal operations */
}
else
{
Sleep(10); //Give the CPU a break
//Do whatever else you need
}
}while(someCondition == true);
return 0;
}
上記が標準的でも完璧でもないことは承知しています。ただし、ミューテックスを使用していない場合は、スレッドを手動で管理する方法にすぎません。単なるアイデア/提案