首页 > 解决方案 > 一个线程只读取,一个线程只修改。这个变量是否也需要与 linux c 的互斥锁?

问题描述

我遇到了一个问题。发现了一个类似的问题,但是看了之后觉得没有得到想要的答案。另外,我想在问题下添加评论,但我目前没有权限。(50声望)

我的问题:我有 2 个线程,线程 1 只是随时修改变量 var_A,线程 2 将执行循环。当线程 2 到达某个特定步骤并找到 var_A = 1 时,它将执行动作 1。如果找到 var_A = 2 ,它会执行动作2。在这种情况下,我还需要添加一个互斥锁吗?

如果添加线程 3 需要做类似线程 2 的事情,但是只访问 var_A 的值而不修改它,我此时是否需要添加互斥锁?

根据上面类似问题的答案,如果变量不是单字节类型而是多字节类型,我需要加一个互斥锁,因为它可能适合读取和修改var_A的一部分。但现在我只是 char 类型的 var_A。我想确保在这种情况下不需要添加互斥锁。

标签: clinuxmultithreading

解决方案


推荐阅读