【发布时间】:2017-01-27 02:32:27
【问题描述】:
我有一个关于互斥锁和 pthread 的问题。
如果有共享标志,我们称之为 (F1)。并且有多个线程。 但只有一个线程 (T1) 可以提升/停止标志,所有其他线程 (T2..Tn) 只能读取或拉取状态。
如果 T1 使用 mutex_lock/mutex_unlock 当标志 F1 将被设置为新值时是否足够? 所有其他线程是否也应该使用 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);
}
}
【问题讨论】:
标签: locking pthreads mutex unlock shared-resource