0
以下のメンバ関数を考えてみましょう。デッドロックにつながるでしょうか?2つのオーバーラップするmutexによってデッドロックが発生しますか?
void foo::insert(item_ptr item)
{
lock_guard<mutex> lock(mu_);
items_.insert(item);
}
void foo::insert(vector<item_ptr> items)
{
lock_guard<mutex> lock(mu_); // will this lead
// to deadlock?
for(auto item:items)
insert(item);
}
詳細情報を追加してください。 'foo:insert'は構文エラーです。 2つのスレッドの中でどちらが呼び出されているのか... – Rakete1111
お互いに依存しない限り、私はそうは思わないでしょう。あなたは私たちにフルクラスを教えてもらえますか? – refi64
ミューテックスは、C++ライブラリの実装に準拠していません。あ、はい。代わりにrecursive_mutexを使用してください。 –