私のアプリケーションでは、重要なセッションでは 1 種類のスレッドのみが処理されていることを確認する必要があります。特定のタイプのスレッド数が指定されておらず、「大きい」可能性があります。私は簡単な解決策を持ってきました:
MutableInt a,b,c;
Semaphore mutex;
void enterA() {
while (true) {
mutex.acquire();
if (b.intValue() == 0 && c.intValue() == 0) {
a.increase();
break;
}
mutex.release();
}
}
void exitA() {
while(true) {
mutex.acquire();
a.decrease();
mutex.release();
}
}
私は例外処理をスキップしており、B&C の部分は単にコピーして貼り付けるだけです。
期待どおりに動作します (スレッド スタベーションの可能性は問題ありません) が、生成される負荷が大きすぎます。スレッドは常にカウンターをチェックしています。別の解決策があると思いますが、例が思いつきません。