以下代码段是否可以由于使用lock_guard
已采用的互斥锁而导致未污染的行为?如果在同一代码段中使用unique_lock
代替lock_guard
是否安全?我知道有std::unique_lock<T>::lock/unlock()
#include <iostream>
#include <thread>
#include <mutex>
#include <chrono>
std::mutex m1;
void func(int count ){
std::lock_guard lG{m1};
std::cout << std::this_thread::get_id() << std::endl;
if(count == 1) {
m1.unlock();
std::this_thread::sleep_for(std::chrono::duration<size_t,std::ratio<1,1>>{6});
m1.lock();
}
std::cout << std::this_thread::get_id() << std::endl;
}
int main()
{
std::thread t1 {func,1};
std::thread t2 {func,9};
t1.join();
t2.join();
}