私は1つのミューテックス、2つのスレッド、1つの関数、1つのサイクル(擬似コード)を持っているとしましょう。 機能:セマフォ(ミューテックス)のトラブル
void Update(){
Mutex.enter();
...// time: 10 ms
Mutex.leave();
}
MAIN.CPP:
void main(){
...// Starting thread
while(true)
Update();
}
スレッド:
void Thread(void *){
Mutex.enter();
... //
Mutex.leave();
}
しかし、ミューテックス小さな時間が自由になるよう機能は、常に呼び出します。どのくらいの確率でスレッドがミューテックスに入る必要がありますか?低い場合、どのように解決することができますか?
おそらく、更新呼び出しの間にプロセッサを明示的に生成しますか?例えば、 'pthread_yield()'関数があります – Kevin
継続的な呼び出しを排除するデータ/コード用の他のデザインを見つけるのは非常に難しいです。収量()は弾丸の絆創膏です。それはちょっと助けるかもしれませんが、すぐに手術が必要になります。 –
スレッドがMutex.enterを呼び出すとブロックされ、他のスレッドの呼び出しが終了するとすぐにスレッドはその時点で唯一のスレッドであるため、スレッドを要求します。 – jcoder