我正在用 C 编写一个程序,并且有一个调用多个线程的函数。
这些线程将循环运行,直到标志设置为关闭。该标志只是一个值为 0 或 1 的 int。
出于性能原因,我不想设置互斥体来读取此标志,并且我认为我并不真正需要它,因为没有线程正在写入该标志,但我不确定。
您的意见是什么?
注意:在我调用
join_pthread
之前,该标志已被主进程/线程设置为关闭。
我只需要互斥锁来进行读操作吗?
不 - 但是,您的线程不仅从变量中读取。有一个线程正在写入它。
如果没有某种同步(使变量原子化或使用互斥体),程序将出现数据竞争。这样,您的程序就会出现未定义的行为,并且可能表现得非常奇怪。例如,读取线程可能永远不会看到写入线程已写入任何内容。