我有一个全局变量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()不断地在它上面?