単一のスレッドのセマフォ
-
28-09-2019 - |
質問
スレッドが1つしかない場合、ミューテックスまたはセマフォを使用することが理にかなっているのではないかと思っていました。
ご協力いただきありがとうございます。
解決
コンポーネントにスレッド保護を設計します。これは、現実的に予測できるあらゆる環境で機能することを目的とした再利用可能でスケーラブルなコンポーネントであるためです。多くの場合、それらは最初に単一のスレッド環境で使用されます。多くの場合、実装の範囲が拡張され、より多くのスレッドが含まれます。その後、新しいアクセスシナリオから保護するためにリソースを追いかける必要はありません。
他のヒント
Mutexは、内部プロセス全体の共有ではなく、システム全体の共有に使用できるため、意味をなさない可能性があります。たとえば、Mutexを使用できます アプリケーションが2回開始されないようにします.
これは少し離れているかもしれませんが、再帰関数を書いており、各レベルが個別のリソースに登録することを望んでいるとしましょう。このようにして、リソースを1か所でクリーンアップする責任を維持できます (リソースプール).
トリックの質問のように聞こえます。技術的には、はい。名前付きMutexを使用して、それぞれに単一のスレッドを含む複数のプロセスを同期することができます。
使用できます system-wide semaphores
(そしてミューテックスでさえ)する inter-process communication
.
単一の読み取りプロセスから、別の単一スレッドプロセスに信号を送ることができます acquire()/release()
- たとえば、名前付きのセマフォで。
環境がシステムをサポートする場合、非線形動作を追加します。セマフォを使用して、割り込みトリガーまでメインスレッドで睡眠をとることができます。