多くのインスタンスを持つC++クラスがあり、アプリケーションスレッドを安全にしたい。 このクラスは、例えば、部材及びそれを処理する関数があります。マルチスレッドアクセスのクラスインスタンスを保護する
class MyCls {
int x;
void f() { x++; }
};
私はそう限り、私はそれを見て、私は2つのオプションがあり、このメンバーを保護する必要があります。
- を追加しますグローバルクリティカルセクションと このメンバーに触れる前にそれを入力してください。
- クラス にクリティカルセクションを追加し、各インスタンスがそれ自身のメンバーを保護するようにします。
どちらのソリューションは、巨大overkillsです:
- 2つの異なるインスタンスは全く同期すべきではありません。
- OSは、実際に衝突が非常に少ない数百万のクリティカルセクションを処理する必要があります。
私が使用できる別のソリューションまたはマルチスレッドデザインパターンはありますか?
特別な初期化をまったく必要とせず、スレッドがブロックしている間だけリソースを消費するロックがあります。たとえば、ここにMicrosoftのものがあります。http://msdn.microsoft.com/en-us/library/aa904937.aspx – wj32
コードの書式設定に4つのインデントを使用してください。 –
この質問のCタグはなぜですか? – Mandrake