递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 【源码】[251021更新]PC无需定义方法多线程启动线程任意参数

  [复制链接]

19

主题

231

帖子

2670

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2670
跳转到指定楼层
楼主
发表于 2024-7-21 22:14:13 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 小小小小鸟 于 2025-10-21 10:26 编辑

20251021更新:
返璞归真,优化写法,用最简单的方式来实现捕获,无需传参了,直接在线程内部使用局部变量(拷贝)、类成员变量(引用)。有问题请及时留言反馈。



游客,如果您要查看本帖隐藏内容请回复


20240724更新:
加入对任意类型参数的支持,终于不被传参文本折磨了~
加入启动线程失败的判断(虽然几乎不太可能出现,但还是要严谨)
加入方法:多线程.结束当前线程(其实就是return,但是直接返回可能会和火山语法冲突)。



////////下方为历史
每次使用多线程时,启动线程都要定义一个新的方法,偶然看到了火山go例程里关于函数体的应用,就突发灵感试试在PC中能否实现,起初想利用WINAPI CreateThread来实现,发现无法访问类成员,就换成c++自己的thread头文件,结合匿名函数捕获[this],初步实现了功能,抛砖引玉,有任何想法的都可以交流。










pic1.png (469.6 KB, 下载次数: 1706)

pic1.png
回复

使用道具 举报

15

主题

579

帖子

1684

积分

金牌会员

Rank: 6Rank: 6

积分
1684
155#
发表于 2025-10-25 12:08:06 来自手机 | 只看该作者
好高级,看不懂
回复

使用道具 举报

2

主题

65

帖子

1951

积分

金牌会员

Rank: 6Rank: 6

积分
1951
154#
发表于 2025-10-25 08:06:03 | 只看该作者

感谢大佬贡献
回复

使用道具 举报

19

主题

231

帖子

2670

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2670
153#
 楼主| 发表于 2025-10-25 07:20:39 来自手机 | 只看该作者
filippo009 发表于 2025-10-25 05:57
要访问多个网页,不开线程好像会卡,我用e 写的 多线程就不卡..

火山也可以实现,多研究研究,看看别人代码,加油!
回复

使用道具 举报

3

主题

32

帖子

135

积分

注册会员

Rank: 2

积分
135
152#
发表于 2025-10-25 05:57:34 | 只看该作者
小小小小鸟 发表于 2025-10-24 09:24
主线程等待呗,加个标记判断呗,或者高级点用事件通知,不过你既然主线程要等待这个结果,那就可能阻塞主 ...

要访问多个网页,不开线程好像会卡,我用e 写的 多线程就不卡..
回复

使用道具 举报

1

主题

40

帖子

704

积分

高级会员

Rank: 4

积分
704
151#
发表于 2025-10-24 09:33:19 | 只看该作者
这个要学习,这么简单,怎么实现
回复

使用道具 举报

19

主题

231

帖子

2670

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2670
150#
 楼主| 发表于 2025-10-24 09:24:24 | 只看该作者
filippo009 发表于 2025-10-24 09:11
谢谢,再请教一下,我是运行线程后,要返回值 给主程序,主程序还要用这个 值 做其他操作。。这种? ...

主线程等待呗,加个标记判断呗,或者高级点用事件通知,不过你既然主线程要等待这个结果,那就可能阻塞主线程,这样为什么还要多线程执行,直接在主线程中执行得了
回复

使用道具 举报

3

主题

32

帖子

135

积分

注册会员

Rank: 2

积分
135
149#
发表于 2025-10-24 09:11:44 | 只看该作者
小小小小鸟 发表于 2025-10-24 08:48
直接定义一个类成员变量,在线程内部访问修改它,但一定要注意变量的线程安全性,建议加锁修改 ...

谢谢,再请教一下,我是运行线程后,要返回值 给主程序,主程序还要用这个 值 做其他操作。。这种?
回复

使用道具 举报

5

主题

229

帖子

2219

积分

核心用户

用户组:菜鸟用户

Rank: 9Rank: 9Rank: 9

积分
2219
148#
发表于 2025-10-24 08:57:34 | 只看该作者
看看, 这个是不是要简便些,,学习下,
死活学不会
回复

使用道具 举报

19

主题

231

帖子

2670

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2670
147#
 楼主| 发表于 2025-10-24 08:48:57 来自手机 | 只看该作者
filippo009 发表于 2025-10-24 08:34
请教一下。线程后能返回值吗。E 是用程序集变量,火山里面要怎么实现?

直接定义一个类成员变量,在线程内部访问修改它,但一定要注意变量的线程安全性,建议加锁修改
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-5 17:35 , Processed in 0.110668 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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