のは、私が持っているとしましょう:私は型ベースのオブジェクトを作成する2つの独立したスレッド上で、メソッドは、スレッドセーフと見なされるf
ならば今スレッドセーフと静的関数
class base
{
base(){f(this);};
static void f(base * b) {(b->d)++;};
int d;
};
を? 私が知っていることは、メソッドがスレッドセーフであるためには、静的メンバーもグローバル変数も使用しないでください。しかし、上の例からわかるように、変数d
を静的にしないことにしました。代わりに、実行中のbaseのインスタンスを通して呼び出します。
また、私はこの行を保護する必要はないと考えています:(b->d)++;
mutexを使って各スレッドはbaseと変数dの別々のインスタンスを持つためです。
私の分析では正しいですか?私は注意すべきことは何かありますか?
あなたは正しいです。ベースポインタがスレッド固有である限り、あなたは良いです。 – perreal
プログラムをコンパイルできますか?それはコンパイルエラー – stamhaney
@stamhaneyをスローする必要があります。いいえ、私は理論を解決しようとしています:)問題点を指摘してください。 – Kam