タグ付けされた質問 「weak-ptr」


1
このスレッドサニツァー警告のレースはどこですか?
以下のコードは、macOSでスレッドサニタイザーを使用して実行すると警告を生成します。レースの場所がわかりません。shared_ptrおよびweak_ptrの制御ブロックはスレッドセーフであり、からのプッシュとポップstd::queueはロックを保持したまま行われます。 #include <future> #include <memory> #include <queue> class Foo { public: Foo() { fut = std::async(std::launch::async, [this] { while (!shouldStop) { std::scoped_lock lock(mut); while (!requests.empty()) { std::weak_ptr<float> requestData = requests.front(); requests.pop(); (void)requestData; } } }); } ~Foo() { shouldStop.store(true); fut.get(); } void add(const std::weak_ptr<float> subscriber) { std::scoped_lock lock(mut); requests.push(subscriber); } …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.