hs999xl 发表于 2023-9-12 08:26:19

多线程读写同一变量数组的不同成员的问题

有一个变量数组,它有两个成员。
有二条线程,方法A与方法B。

方法A:频繁读写变量的值
方法B:频繁读写变量的值

请问这样写程序可以吗?(没加锁)

kamikaze 发表于 2023-9-12 09:12:05

线程里就最好不要写。。。你说行不行。。。

hs999xl 发表于 2023-9-12 09:38:07

kamikaze 发表于 2023-9-12 09:12
线程里就最好不要写。。。你说行不行。。。

线程里不要有赋值操作是吗?:o

b0y 发表于 2023-9-12 09:56:51

如果就是读数组不会变 就不需要加锁

如果有其他线程会写数组 就要加锁

alexqj 发表于 2023-9-12 10:33:37

方法A和B各自操作单独的变量,看起来是不会冲突

hs999xl 发表于 2023-9-12 11:36:10

alexqj 发表于 2023-9-12 10:33
方法A和B各自操作单独的变量,看起来是不会冲突

一个变量数组的不同成员,是不是属于一个变量?

kamikaze 发表于 2023-9-12 11:38:32

b0y 发表于 2023-9-12 09:56
如果就是读数组不会变 就不需要加锁

如果有其他线程会写数组 就要加锁 ...

读不需要加锁

hs999xl 发表于 2023-9-12 11:39:51

比如2条线程记录运行次数:
方法A运行完一遍就 变量=变量+1
方法B运行完一遍就 变量=变量+1
这样不加锁可以吗?

alexqj 发表于 2023-9-12 16:15:43

hs999xl 发表于 2023-9-12 11:39
比如2条线程记录运行次数:
方法A运行完一遍就 变量=变量+1
方法B运行完一遍就 变量=变量+1


你测一下呢,内存里面是保存在不同地址的,理论上是属于不同变量

b0y 发表于 2023-9-12 16:44:36

hs999xl 发表于 2023-9-12 11:39
比如2条线程记录运行次数:
方法A运行完一遍就 变量=变量+1
方法B运行完一遍就 变量=变量+1


这样是要加锁的
页: [1] 2
查看完整版本: 多线程读写同一变量数组的不同成员的问题