並列に実行する必要がある 2 つの関数 A と B があります。その中でa
発生したA
場合は variable を設定する必要がありますeventa
。b
で発生した場合は、B
を設定する必要がありますeventb
。while ループをチェックeventa or eventb
インしていますが、設定どおりに何かを実行することが重要です。eventa or eventb
このチェック関数も、A と B と同時に実行されるスレッドである必要があります。A と B をスレッドとして記述する必要があると考えました。それらを並行して実行し、2 つのグローバル変数を定義してeventa
、eventb
両方をロックします。間違っていますか? それはこの問題の解決策ですか?これが私がすべきだと思うアルゴリズムです:
thread A{
while(1)
{
if(a){
lock eventa;
set eventa;
unlock eventb;
}
}
}
thread B{
while(1)
{
if(b){
lock eventb;
set eventb;
unlock eventb;
}
}
thread check {
while(1)
{
if(eventa or eventb)
{ if(eventa)
{ lock eventa;
unset eventa;
} else if(eventb)
{ lock eventb;
unset eventb;
}
call foo;
}
}
}