while(true)ループにスレッドを入れて、条件が治療を開始しても問題ないかどうかテストするのは悪い習慣ですか?while(true)とwait + conditionの同期
void run()
{
for(;;)
{
if(dataReady)
{
processData();
}
}
}
は/条件のメカニズムを待って使用することが好ましい。
私は待つことはほとんどないことを期待:
void run()
{
for(;;)
{
if(dataReady)
{
processData();
}
lock_guard lock(mutex);
condition_.wait(lock);
}
}
もちろんの別のスレッドがcondition_.notify_one()
EDITを呼び出します。
'dataReady'が何らかのアトミックまたはロック保護されたデータ型でない限り、データレースとなることに注意してください。 (例えば、それがバニラのブールだった場合) – GManNickG
「私はほとんど待たないと思う」それは少し誤解を招く可能性があります。あなたが10,000,000で一度だけ待つと仮定します。ほとんどの場合、私は4GHzのCPUを稼働させているときにはまだかなり待っています。 –