火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 多线程执行顺序疑问?

[复制链接]

44

主题

174

帖子

734

积分

高级会员

Rank: 4

积分
734
跳转到指定楼层
楼主
发表于 2024-3-8 13:02:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
火山模块中的 启动线程() 命令,  
如果一次启用多个 启动线程()  命令去执行不同的方法,这些线程到底是按启动顺序逐个执行的,还是并发执行的呢?
我测试的结果是按启动顺序一个线程执行完毕后才能执行下一个线程,但问文心一言说启动的线程是并发执行的,不一定按启动顺序来执行。
哪位大佬懂得
多线程测试.zip (28.83 KB, 下载次数: 3)
回复

使用道具 举报

44

主题

174

帖子

734

积分

高级会员

Rank: 4

积分
734
沙发
 楼主| 发表于 2024-3-8 13:04:57 | 只看该作者
如果确实是并发执行,那有什么命令可以控制线程按启动顺序逐个执行,按启动顺序,前一个执行完毕后才能执行下一个,类似于易语言中的 等待线程()
回复

使用道具 举报

309

主题

1397

帖子

5383

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5383
QQ
板凳
发表于 2024-3-8 13:36:09 | 只看该作者
随机            这跟系统线程调度器有关。
linux多线程支持的不好就是因为这玩意,不过最新的linux好像换了线程调度器
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

26

主题

1519

帖子

5699

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5699
地板
发表于 2024-3-8 14:17:34 | 只看该作者
本帖最后由 Xelloss0618 于 2024-3-8 14:19 编辑

线程是按你的代码顺序创建的,线程创建后就是并发执行,互相抢占资源,这个由系统调度。
启动线程最后一个参数就可以等待线程执行完毕,但既然你都要阻塞等待了,还用线程干啥呢?
你这个需求其实也可以用线程池,线程池的任务投递后是排队执行的,推荐PIV模块或火山模块里的线程池对象类。
回复

使用道具 举报

44

主题

174

帖子

734

积分

高级会员

Rank: 4

积分
734
5#
 楼主| 发表于 2024-3-8 15:20:07 | 只看该作者
感谢大佬们,现在懂了,其实问题我写错了,起初是想了解 线程池.启动线程() 这样启动的是否会按启动顺序执行,目前经过测试也一样是并发执行的。
回复

使用道具 举报

44

主题

174

帖子

734

积分

高级会员

Rank: 4

积分
734
6#
 楼主| 发表于 2024-3-8 15:25:10 | 只看该作者
主要是想让一些耗时的功能方法不卡界面,所以用了线程池,又考虑到执行的前后顺序是固定的,用户多次点击会发生问题,就必须控制线程按启动顺序逐个执行,我新建了一个线程状态变量,在启动线程前就判断变量的真假,是否可启动下一线程,进而避免用户多次点击造成崩溃。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-1 13:21 , Processed in 0.095756 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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