我有一个全局变量flag
、一个函数this()
和一个函数that()
。现在,main()
和this()
所有人that()
都有需要阅读和/或写作的场合flag
。要正确使用互斥锁,我需要:
- 声明一个
pthread_mutex_t
并初始化它。 this()
为andthat()
和它们创建线程,pthread_join()
因为我想在退出之前main()
等待this()
并that()
完成。- 代码中的任何位置,无论是
main()
、this()
还是that()
,在哪里flag
被读取或写入,调用pthread_mutex_lock()
然后 [read/write]flag
然后调用pthread_mutex_unlock()
那是对的吗?
我不打算这样做,但如果我想像这样检查flag
无限循环main()
:
while(flag != value)
continue;
lock()
您和互斥体以及其他线程会在哪里unlock()
有机会访问flag
并main()
不断地在它上面?