std::unique_lock
की release
विधि का उपयोग किस स्थिति में करेगा? मैंने unlock
विधि के बजाय release
विधि का उपयोग करने की गलती की और यह समझने में कुछ समय लगा कि निम्नलिखित कोड क्यों काम नहीं कर रहा था।std :: unique_lock :: रिलीज के लिए उपयोग के मामले क्या हैं?
#include <mutex>
#include <iostream>
#include <vector>
#include <thread>
#include <chrono>
std::mutex mtx;
void foo()
{
std::unique_lock<std::mutex> lock(mtx);
std::cout << "in critical section\n";
std::this_thread::sleep_for(std::chrono::seconds(1));
lock.release();
}
int main()
{
std::vector<std::thread> threads;
for (int i = 0; i < 5; ++i)
threads.push_back(std::thread(foo));
for (std::thread& t : threads)
t.join();
}
इसके अलावा: इस मामले में आप 'lock_guard' चाहते हैं, न कि' unique_lock'। –