递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[其它] 求问 多线程要怎么关闭

[复制链接]

4

主题

37

帖子

196

积分

注册会员

Rank: 2

积分
196
跳转到指定楼层
楼主
发表于 2025-10-26 01:21:24 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
根据论坛的, 启动线程,采用了取文本指针()传递了参数,在E 里面有个 关闭线程句柄,请问火山这种 要怎么处理 ,不关闭 会有什么影响呢?


<火山程序 类型 = "通常" 版本 = 1 />
xxd2 = 新代码 + "#" + 到文本 (d2)                   // 传递参数
pd2 = 取文本指针 (xxd2)

xxd1 = 新代码 + "#" + 到文本 (d1)                  // 传递参数
pd1 = 取文本指针 (xxd1)

启动线程 (获取数据2, pd2, , , )
延时 (50)

启动线程 (获取数据1, pd1, , , )

延时 (150)


回复

使用道具 举报

71

主题

346

帖子

4228

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4228
14#
发表于 2025-10-27 12:07:07 | 只看该作者
@Xelloss0618

X大,请教一下,说到多线程,见如所示,火山的启动线程好像无法达到如图这种效果,据说是二次封装,如使用火山的启动线程,将等待结束设为真,好像和单方法差不多,并不会有如上效果,已亲测。
好像启动有状态线程才是标准的多线程方式,和这个方式类式,如上的等待线程需要使用同步事件或信号灯才可以实现类似效果,经我测试后还是没有如图上的效果好。


请X大解惑一下,如使用图上效果的话,用火山自带的多线程如何才能达到对应的效果。
回复

使用道具 举报

27

主题

553

帖子

3001

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3001
13#
发表于 2025-10-27 10:28:51 | 只看该作者
弄一个线程池吧,支持类传递
回复

使用道具 举报

29

主题

2756

帖子

9598

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9598
12#
发表于 2025-10-27 09:02:39 | 只看该作者
filippo009 发表于 2025-10-27 08:23
我看了别人写的, 1种用了: 类_全局锁,然后 锁.进入许可..(但没找到这个 类_全局锁是)
另外一种 是互斥 ...

底层是一样的,不同封装的模块而已,互斥锁类是官方就有的,用这个就行。
回复

使用道具 举报

4

主题

37

帖子

196

积分

注册会员

Rank: 2

积分
196
11#
 楼主| 发表于 2025-10-27 08:23:46 | 只看该作者
Xelloss0618 发表于 2025-10-26 23:11
你加了延时,那肯定是最慢的。
就算是易语言,线程里操作全局变量也是靠加锁的。
你定义一个全局的互斥锁 ...

我看了别人写的, 1种用了: 类_全局锁,然后 锁.进入许可..(但没找到这个 类_全局锁是)
另外一种 是互斥锁..  .加锁,解锁 方式....
再请教一下这个....
回复

使用道具 举报

29

主题

2756

帖子

9598

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9598
10#
发表于 2025-10-26 23:11:56 | 只看该作者
filippo009 发表于 2025-10-26 22:39
我是线程处理完数据,然后得返回到全局变量里,,还要回去再加工处理..
加锁 的话 我后面试试..
.. 请教 ...

你加了延时,那肯定是最慢的。
就算是易语言,线程里操作全局变量也是靠加锁的。
你定义一个全局的互斥锁,然后无论是线程内部还是主线程,在操作全局变量之前都需要加锁,操作完也要立即解锁。
回复

使用道具 举报

4

主题

37

帖子

196

积分

注册会员

Rank: 2

积分
196
9#
 楼主| 发表于 2025-10-26 22:39:46 | 只看该作者
Xelloss0618 发表于 2025-10-26 22:23
你是在线程里加入成员到外部的成员/全局变量里?
那就应该加锁啊,用互斥锁。
速度就不用纠结了,创建线程 ...

我是线程处理完数据,然后得返回到全局变量里,,还要回去再加工处理..
加锁 的话 我后面试试..
.. 请教一下,哪种不耗内存..?

原来e里面写的也加了延迟,只是e只能支持32位,现在要到64位,改火山..
就当学习一种新的方法,谢谢你,我是半吊子,纯搞一点点数据自己用
回复

使用道具 举报

29

主题

2756

帖子

9598

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9598
8#
发表于 2025-10-26 22:23:31 | 只看该作者
本帖最后由 Xelloss0618 于 2025-10-26 22:25 编辑
filippo009 发表于 2025-10-26 22:19
刚我重新 加载了PIV 模块,重新试试了下,由于我运行完线程,要返回一个数据,之前返回数据用的 数组类 . ...

你是在线程里加入成员到外部的成员/全局变量里?
那就应该加锁啊,用互斥锁。
速度就不用纠结了,创建线程本身耗时就有几毫秒,PIV和启动线程的速度差距是1微秒内,相比之下这点开销不值一提。
回复

使用道具 举报

4

主题

37

帖子

196

积分

注册会员

Rank: 2

积分
196
7#
 楼主| 发表于 2025-10-26 22:19:32 | 只看该作者
filippo009 发表于 2025-10-26 20:17
谢谢你,  野指针容易丢包吗..是申请内存方式和 PIV模块相差不大的意思吧 ?  ...

刚我重新 加载了PIV 模块,重新试试了下,由于我运行完线程,要返回一个数据,之前返回数据用的 数组类 .加入成员,启动线程后不延迟, 会导致数组的数据错位,要用数组方式,必须加延时
另外,我不用数组方式,给每个线程返回单独定义了了个变量,可以不用延时... 速度目前无法测试,到底跟以前比哪个快... 主观感觉,跟e写的速度差不多..
回复

使用道具 举报

29

主题

2756

帖子

9598

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
9598
6#
发表于 2025-10-26 22:03:38 | 只看该作者
filippo009 发表于 2025-10-26 20:17
谢谢你,  野指针容易丢包吗..是申请内存方式和 PIV模块相差不大的意思吧 ?  ...

野指针的意思是指针原先指向的变量已经被销毁,现在的指针数据是不可靠的。
PIV模块里封装的是STL标准库的线程,和申请内存是有区别的,但都能实现功能,标准库的更强大一点,不限制参数类型和参数数量。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-16 20:00 , Processed in 0.100363 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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