これは奇妙な質問なので、長い説明を提供しようとします。
シングルコアマシンで実行しているとしましょう。そして、2 つのスレッドがあります。ミューテックスに関する従来のプロデューサー コンシューマーの問題を考えてみましょう。シングル コア マシンで実行する場合 (1 コア HT なし) を疑問に思っています:
C++ でこれら 2 つのスレッドの実行を 1 つに融合して、mutex を単純な int ストア/ロード操作として実装できるようにする方法はありますか?ミューテックスの代わりに。たとえば、次のように動作します。現在の buffer_idx がprocessed_idx よりも大きい場合、統合スレッドのプロデューサー コードは循環バッファーにデータを入れるだけで、コンシューマー コードはバッファーから読み取るだけです。
これはばかげた質問のように思えますが、多くの組み込みのものはまだ 1 コアです。簡単にするために、両方のスレッドがフォームであると仮定します
while(! shutdown)
{
//...
}
両方の while 体を大きな while に入れるだけで、期待どおりに機能しますか?