void print_block(int n, char c)
{
// critical section (exclusive access to std::cout signaled by lifetime of lck):
printf("---------------before lock\n");
std::unique_lock<std::mutex> lck (mtx);
for (int i=0; i<n; ++i)
{
int sleepnum = get_random();
// printf("sleep num = %d \n",sleepnum);
std::chrono::milliseconds dura(sleepnum*10);
std::this_thread::sleep_for(dura);
std::cout << c;
}
std::cout << '\n';
}
int main()
{
std::thread th1 (print_block,120,'1');
std::thread th2 (print_block,120,'2');
th1.join();
th2.join();
return 0;
}
把printsleepnum注释之后,sleep的时间变长了很多,为什么会这样?