如果线程要访问关键区域,则该线程将获取互斥体。
但是在线程尝试访问该区域之前,互斥锁(如果以前从未使用过)是“空闲”的还是互斥锁始终由线程持有?
答案 0 :(得分:1)
如果没有线程锁定互斥锁(默认情况下是这种情况),则该互斥锁可以用您的话视为“免费”。
因此,要回答您的问题,不,互斥锁不一定总是必须保持。并且在创建时,它将没有线程持有它。
答案 1 :(得分:1)
互斥锁可以是“免费的”(即已解锁)。线程只能锁定(获取)未锁定的互斥体。
此外, pthread互斥锁可以创建为具有静态存储持续时间的全局变量,并以PTHREAD_MUTEX_INITIALIZE
初始化-这种互斥对象实际上是在“ 编译时< / em>”,当然没有线程可以从那里保存它...