火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

吴总:多线程有BUG

[复制链接]

17

主题

794

帖子

2639

积分

金牌会员

Rank: 6Rank: 6

积分
2639
跳转到指定楼层
楼主
发表于 2020-12-24 20:18:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
此例测出两个问题:
一、多个线程同时启动时,有时有一个线程不会被运行(此例第一个线程不会被运行)。
二、如果三个线程同时运行就会出现访问类变量出错现象,三个线程只有第一个线程里是写操作,后面两个是读,(按Windowsr的内存访问机制,这样的读写操作是不会引起内存冲突的,不知是否理解错误请大佬们指教),同样的代码在易语言里是没此问题(附有易语言例子)。
如果运行不会出错说明第一个线程没有运行,注意查看调试输出。
对火山PC不熟,不知是不是自己的问题。



线程测试2.rar (129.31 KB, 下载次数: 24)
回复

使用道具 举报

53

主题

1336

帖子

7463

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7463
沙发
发表于 2020-12-24 20:36:40 | 只看该作者
好我检查一下
回复

使用道具 举报

53

主题

1336

帖子

7463

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7463
板凳
发表于 2020-12-24 20:43:23 | 只看该作者
不是BUG,首先:
1. 调试输出信息是会有溢出的,如果输出信息过多,有可能会被顶出不显示,但是实际上代码还是执行了的.
2. 访问公用成员变量必须加锁,在易语言里面不加锁访问也是不对的.
回复

使用道具 举报

28

主题

338

帖子

2883

积分

金牌会员

Rank: 6Rank: 6

积分
2883
地板
发表于 2020-12-24 22:07:32 | 只看该作者
- -启动有状态线程 从哪来的  需要下载类库吗
回复

使用道具 举报

53

主题

1336

帖子

7463

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7463
5#
发表于 2020-12-24 22:12:11 | 只看该作者
最新版里面就有啊,在置顶帖子里面
回复

使用道具 举报

17

主题

794

帖子

2639

积分

金牌会员

Rank: 6Rank: 6

积分
2639
6#
 楼主| 发表于 2020-12-24 22:46:44 | 只看该作者
飞扬工作室 发表于 2020-12-24 20:43
不是BUG,首先:
1. 调试输出信息是会有溢出的,如果输出信息过多,有可能会被顶出不显示,但是实际上代码还是执 ...

说明里的第一个问题很难出现,得重复试,才能出现,第一个问题出现后,第一个线程没有输出,后面两个线程正常输出,但“测试类.数值”一直为“0”,说明第一个线程里的“测试类.数值 = 测试类.数值 + 1”没有被执行,也就是第一个线程没有运行或被挂起。
回复

使用道具 举报

4

主题

16

帖子

133

积分

注册会员

Rank: 2

积分
133
7#
发表于 2021-1-23 23:39:31 | 只看该作者
我也遇到了同样的问题,同时启动5个有状态线程(A/B/C/D/E),每个线程里第一行是调试输出该线程名文本(A)。大概率遇到5个线程有的启动了有的未启动以及调试输出的内容混乱。例如输出(A/A/E),正常应该输出(A/B/C/D/E)
回复

使用道具 举报

25

主题

483

帖子

1686

积分

金牌会员

Rank: 6Rank: 6

积分
1686
8#
发表于 2021-7-3 13:31:20 | 只看该作者
没有搞懂多线程就不要玩,崩溃到让你怀疑人生
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 05:59 , Processed in 0.090756 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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