0

他のスレッドがオブジェクトのリソースにアクセスしたり読み取ったりできないようにするにはどうすればよいですか? たとえば、メソッドのように、メソッド呼び出しがオブジェクトのリソースにアクセスしている間、そのメソッドをロックして、他のスレッドがそのメソッドを呼び出したときに、最初のスレッドがアクセスしている間にインスタンスのリソースにアクセスしないようにしますか?

たとえば、

int CFoo::FooReadData( int tag )
{
    std::map<int, int>::const_iterator iter = resource.find(tag);

    return *iter.second;
}

上記の方法では、他のスレッドが「リソース」にアクセスしているときに、他の呼び出しスレッドが「リソース」にアクセスできないようにしたいと考えています。

ありがとう。

4

1 に答える 1

2

Intel TBB のような ThreadSafe データ構造を使用できます。

しかし、あなたの例では:

ミューテックスを定義します。

std::mutex m;

int CFoo::FooReadData( int tag )
{
    std::lock_guard(m);

    std::map<int, int>::const_iterator iter = resource.find(tag);

    return *iter.second;
}

(ただし、 などのデータ型を使用するには C++11 コンパイラが必要ですstd::mutex)

于 2013-10-19T10:08:02.887 に答える