0

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

  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;
  }
 }
}
4

0 に答える 0