我有一个关于互斥锁和 pthread 的问题。
如果有共享标志,我们称之为 (F1)。并且有多个线程。但只有一个线程 (T1) 可以提高/停止标志,所有其他线程 (T2..Tn) 只能读取或拉取状态。
当标志 F1 将被设置为新值时,如果 T1 使用 mutex_lock/mutex_unlock 就足够了吗?所有其他线程是否也应该使用 mutex_lock/mutex_unlock,即使它们只会从 F1 读取状态?
Exemple1:
T1()
{
while(Running)
{
pthread_mutex_lock(&lock);
F1 = true;
pthread_mutex_unlock(&lock);
}
}
T2()
{
while(Running)
{
if(F1) {
/* Do something */
}
}
}
Exemple2:
T1()
{
while(Running)
{
pthread_mutex_lock(&lock);
F1 = true;
pthread_mutex_unlock(&lock);
}
}
T2()
{
while(Running)
{
pthread_mutex_lock(&lock);
if(F1) {
/* Do something */
}
pthread_mutex_unlock(&lock);
}
}