私はpre C++ 11を使っています。そうでなければ、スレッドと原子変数をインクルードして私のニーズを満たすことができます。インスタンス化するといくつかのスレッドを開始するクラスを取得しました。1つのスレッドが変数に書き込みます。もう1つのスレッドは変数を読み込みます。どのようにしてその変数を保護しますか?
void ThisClass::ThisThread()
{
while (runThisThread)
{
// doing stuff
}
}
となり、他の機能::私のようなものを持っているスレッド立ち上げた関数内
void ThisClass::StopThisThread()
{
runThisThread = false; // 'runThisThread' variable is 'volatile bool'
}
スレッドが別のスレッドから割り当てられたインデックスに基づいてバッファを介して咀嚼されます。したがって、あるスレッドは他のスレッドが決して何もしない値を割り当てますが、その値を読み取ることになります。私の計画は、より揮発性の高いメモリを使用してそれらのインデックス値を割り当てることでした。しかし、この質問は私が揮発性メモリを間違って使用していることを示唆していますWhen to use volatile with multi threading?。 pre-C++ 11がこのようなマルチスレッドクラスのメモリを扱う正しい方法は何ですか?各スレッドがその変数を読み取ることができる間に、複数のスレッドが1つの変数を割り当てることを許可していないことに注意してください。
編集:これはクロスプラットフォームの必要がないWindowsプログラムであることを忘れてしまった。私は私のスレッドのためにAfxwin.h AfxBeginThread()を使用しています。
あなたはアトミック変数またはミューテックスのいずれかをしたいです。私はそれらを研究するためにOPに練習として残す。 – UKMonkey
あなたが使用するスレッドAPIのミューテックスを使用してください。 –
使用しているAPIはどこかのチュートリアルが必要です。ミューテックスまたは同期メカニズムはどこかで言及されるべきです – Hayt