互斥锁总是由线程持有吗?
Is a mutex always held by a thread?
如果线程想要访问临界区,则线程获取互斥体。
但是在线程尝试访问这个区域之前,是互斥量(如果以前从未使用过)"free"还是互斥量总是由线程持有?
如果没有线程锁定互斥锁,默认情况下就是这种情况,互斥锁可以被认为是你的话"free"。
所以要回答你的问题,不,互斥量并不总是必须持有。并且在创建时它不会有线程持有它。
互斥量可以是 "free"(即解锁)。线程只能锁定(获取)未锁定的互斥量。
此外,可以创建一个 pthread mutex 作为具有静态存储持续时间的全局变量,用 PTHREAD_MUTEX_INITIALIZE
初始化 - 这种互斥对象实际上是在“编译时间”,当然没有线程可以从那里保存它...
如果线程想要访问临界区,则线程获取互斥体。
但是在线程尝试访问这个区域之前,是互斥量(如果以前从未使用过)"free"还是互斥量总是由线程持有?
如果没有线程锁定互斥锁,默认情况下就是这种情况,互斥锁可以被认为是你的话"free"。
所以要回答你的问题,不,互斥量并不总是必须持有。并且在创建时它不会有线程持有它。
互斥量可以是 "free"(即解锁)。线程只能锁定(获取)未锁定的互斥量。
此外,可以创建一个 pthread mutex 作为具有静态存储持续时间的全局变量,用 PTHREAD_MUTEX_INITIALIZE
初始化 - 这种互斥对象实际上是在“编译时间”,当然没有线程可以从那里保存它...