互斥锁是否总是由线程持有?

时间:2018-10-28 17:54:08

标签: c multithreading mutex

如果线程要访问关键区域,则该线程将获取互斥体。

但是在线程尝试访问该区域之前,互斥锁(如果以前从未使用过)是“空闲”的还是互斥锁始终由线程持有?

2 个答案:

答案 0 :(得分:1)

如果没有线程锁定互斥锁(默认情况下是这种情况),则该互斥锁可以用您的话视为“免费”。

因此,要回答您的问题,不,互斥锁不一定总是必须保持。并且在创建时,它将没有线程持有它。

答案 1 :(得分:1)

互斥锁可以是“免费的”(即已解锁)。线程只能锁定(获取)未锁定的互斥体。

此外, pthread互斥锁可以创建为具有静态存储持续时间的全局变量,并以PTHREAD_MUTEX_INITIALIZE初始化-这种互斥对象实际上是在“ 编译时< / em>”,当然没有线程可以从那里保存它...