我只需要互斥锁来进行读操作吗?

问题描述 投票:0回答:1

我正在用 C 编写一个程序,并且有一个调用多个线程的函数。

这些线程将循环运行,直到标志设置为关闭。该标志只是一个值为 0 或 1 的 int。

出于性能原因,我不想设置互斥体来读取此标志,并且我认为我并不真正需要它,因为没有线程正在写入该标志,但我不确定。

您的意见是什么?

注意:在我调用

join_pthread
之前,该标志已被主进程/线程设置为关闭。

c multithreading mutex
1个回答
0
投票

我只需要互斥锁来进行读操作吗?

不 - 但是,您的线程不仅从变量中读取。有一个线程正在写入它。

如果没有某种同步(使变量原子化或使用互斥体),程序将出现数据竞争。这样,您的程序就会出现未定义的行为,并且可能表现得非常奇怪。例如,读取线程可能永远不会看到写入线程已写入任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.