同一线程,调用有互斥锁的函数,不开锁的情况下,是否可以多次调用?
Q:同一线程,调用有互斥锁的函数,不开锁的情况下,是否可以多次调用?
A:不能
#include <iostream>
#include <mutex>
#include <thread>using namespace std;mutex Test_mutex;void out()
{//Test_mutex.lock();//注释掉锁的情况cout << "out function" << endl;
}void test()
{out();sleep(2);cout << "fisrt time over" << endl;out();cout << "all over" << endl;
}int main()
{cout << "start" << endl;thread th1(test);th1.join();cout << "end" << endl;return 0;
}
把锁开打的运行结果:
退出之后,再次调用加锁的函数,阻塞在锁哪里;即使是通过一个线程,也不能在不开锁的情况下,多次调用加了锁的函数
发布评论