火山软件开发平台

标题: 关于多线程与变量的问题 [打印本页]

作者: hs999xl    时间: 2023-5-26 19:02
标题: 关于多线程与变量的问题
1条线程不停的给变量赋值,10条线程不停的读取变量值,请问这样做可以吗?

作者: 350246356    时间: 2023-5-26 19:55
赋值用原子赋值,取值不用
作者: tmf19901124    时间: 2023-5-26 20:29
那要看你的变量是什么类型的了,如果变量长度支持原子操作就用原子操作,否则上锁
作者: 雨中漫步    时间: 2023-5-26 22:57
http://gs.xieyoutx.com/t/t-tz-16 ... 8136758340598-.html

从 27课看到34课
作者: server    时间: 2023-5-27 14:04
本帖最后由 server 于 2023-5-27 14:05 编辑

他们讲的全不对。
你这样做可以的。

总结:全局类型的 变量,若多线程写操作时  需要加 原子 或  临界// 读访问不用。
本帖讨论的是1个线程  写操作。 10个线程读操作。 故:写操作只有一个线程 无第二线程抢占。故不用。

作者: b0y    时间: 2023-5-27 17:17
server 发表于 2023-5-27 14:04
他们讲的全不对。
你这样做可以的。

写的时候 别的线程刚好读呢?  那就出错了,一个线程写只是概率低了点 但是写的时候读 就会出问题
作者: wangvoldp    时间: 2023-5-28 18:26
b0y 发表于 2023-5-27 17:17
写的时候 别的线程刚好读呢?  那就出错了,一个线程写只是概率低了点 但是写的时候读 就会出问题 ...

那也要看读取的内容是什么 要是个int 怕毛线
作者: tmf19901124    时间: 2023-5-28 19:46
wangvoldp 发表于 2023-5-28 18:26
那也要看读取的内容是什么 要是个int 怕毛线

64位的时候操作int呢?或者128位cpu操作int呢?




欢迎光临 火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4