递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

73

主题

338

帖子

2015

积分

金牌会员

嘿嘿哈哈

Rank: 6Rank: 6

积分
2015
跳转到指定楼层
楼主
发表于 2023-9-12 08:26:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有一个变量数组,它有两个成员。
有二条线程,方法A与方法B。

方法A:频繁读写变量[0]的值
方法B:频繁读写变量[1]的值

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

使用道具 举报

53

主题

389

帖子

2410

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2410
15#
发表于 2024-2-22 10:35:37 | 只看该作者
光读或者光写没啥问题,要是频繁读写那就加锁
回复

使用道具 举报

0

主题

21

帖子

166

积分

注册会员

Rank: 2

积分
166
14#
发表于 2024-2-22 03:36:35 | 只看该作者
一个方法只运行一条线程,变量操作代码也没其它线程与它竞争,加什么锁.
如果2个方法都会修改同一全局变量,即使你加了锁也会有竞争错乱此变量的,因为你加不加锁也只有自己一条线程.别一线程在别一方法里也会改变此变量.
回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
13#
发表于 2023-9-12 22:18:08 来自手机 | 只看该作者
基本数据这样没问题,不是火山的数组类就可以了
回复

使用道具 举报

14

主题

107

帖子

711

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
711
12#
发表于 2023-9-12 22:02:19 | 只看该作者
保证在同一时刻或有且或只有一条线程即可
回复

使用道具 举报

50

主题

567

帖子

2473

积分

金牌会员

Rank: 6Rank: 6

积分
2473
11#
发表于 2023-9-12 17:08:07 | 只看该作者
一条线程操作一个数组成员的读与写应该是可以的,前提是这个成员要是一个存放堆栈的指针.所以.也就等于独一无二的变量了,易语言的是这样的.火山的数组类,搞不清是堆栈的指针.还是什么的!!反正,火山除开8字节以下的变量外语能调用.其它基本无望能被调用.
回复

使用道具 举报

28

主题

359

帖子

3323

积分

论坛元老

Rank: 8Rank: 8

积分
3323
10#
发表于 2023-9-12 16:44:36 | 只看该作者
hs999xl 发表于 2023-9-12 11:39
比如2条线程记录运行次数:
方法A运行完一遍就 变量[0]=变量[0]+1
方法B运行完一遍就 变量[1]=变量[1]+1

这样是要加锁的
回复

使用道具 举报

36

主题

193

帖子

1187

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1187
QQ
9#
发表于 2023-9-12 16:15:43 | 只看该作者
hs999xl 发表于 2023-9-12 11:39
比如2条线程记录运行次数:
方法A运行完一遍就 变量[0]=变量[0]+1
方法B运行完一遍就 变量[1]=变量[1]+1

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

使用道具 举报

73

主题

338

帖子

2015

积分

金牌会员

嘿嘿哈哈

Rank: 6Rank: 6

积分
2015
8#
 楼主| 发表于 2023-9-12 11:39:51 | 只看该作者
比如2条线程记录运行次数:
方法A运行完一遍就 变量[0]=变量[0]+1
方法B运行完一遍就 变量[1]=变量[1]+1
这样不加锁可以吗?
回复

使用道具 举报

113

主题

693

帖子

4378

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4378
7#
发表于 2023-9-12 11:38:32 | 只看该作者
b0y 发表于 2023-9-12 09:56
如果就是读  数组不会变 就不需要加锁

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

读不需要加锁
QQ 89075309
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 00:50 , Processed in 0.092875 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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