递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 5471|回复: 7
打印 上一主题 下一主题

[视窗] 关于多线程与变量的问题

[复制链接]

73

主题

338

帖子

2017

积分

金牌会员

嘿嘿哈哈

Rank: 6Rank: 6

积分
2017
跳转到指定楼层
楼主
发表于 2023-5-26 19:02:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1条线程不停的给变量赋值,10条线程不停的读取变量值,请问这样做可以吗?
回复

使用道具 举报

54

主题

408

帖子

2880

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2880
QQ
沙发
发表于 2023-5-26 19:55:27 | 只看该作者
赋值用原子赋值,取值不用
QQ:350246356
回复

使用道具 举报

7

主题

247

帖子

2025

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2025
板凳
发表于 2023-5-26 20:29:39 | 只看该作者
那要看你的变量是什么类型的了,如果变量长度支持原子操作就用原子操作,否则上锁
回复

使用道具 举报

5

主题

86

帖子

427

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
427
QQ
地板
发表于 2023-5-26 22:57:08 | 只看该作者
回复

使用道具 举报

111

主题

612

帖子

2174

积分

金牌会员

Rank: 6Rank: 6

积分
2174
QQ
5#
发表于 2023-5-27 14:04:10 | 只看该作者
本帖最后由 server 于 2023-5-27 14:05 编辑

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

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

评分

参与人数 1金钱 +6 收起 理由
hs999xl + 6

查看全部评分

专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

28

主题

359

帖子

3325

积分

论坛元老

Rank: 8Rank: 8

积分
3325
6#
发表于 2023-5-27 17:17:36 | 只看该作者
server 发表于 2023-5-27 14:04
他们讲的全不对。
你这样做可以的。

写的时候 别的线程刚好读呢?  那就出错了,一个线程写只是概率低了点 但是写的时候读 就会出问题
回复

使用道具 举报

23

主题

317

帖子

1471

积分

金牌会员

Rank: 6Rank: 6

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

那也要看读取的内容是什么 要是个int 怕毛线
回复

使用道具 举报

7

主题

247

帖子

2025

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2025
8#
发表于 2023-5-28 19:46:59 | 只看该作者
wangvoldp 发表于 2023-5-28 18:26
那也要看读取的内容是什么 要是个int 怕毛线

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 10:22 , Processed in 0.087233 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表