我想我不太确定mutex
的工作方式。如果mutex
在某些条件后被锁定,它会仅锁定满足相同条件的线程,还是会锁定所有线程,无论mutex
何时解锁?
例如:
if (someBoolean)
pthread_mutex_lock(& mut);
someFunction();
pthread_mutex_unlock(& mut);
是所有线程都停止运行
someFunction();
,还是仅通过if语句的那些线程停止运行? 最佳答案
是所有线程都停止运行someFunction();
,还是仅通过if语句的那些线程停止运行?
仅someBoolean
为true的线程将获得锁。因此,只有在其他人持有相同锁的情况下,才会阻止这些线程调用someFunction()
。
但是,在提供的代码中,所有线程都将在互斥锁上调用pthread_mutex_unlock
,无论它们是否实际锁定了它。对于使用默认参数创建的互斥锁,它构成undefined behavior且必须固定。
关于c++ - C++ Pthread互斥锁,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51980637/