递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 【求助】n个线程池是如何动态调用的呢?谢谢!

[复制链接]

7

主题

63

帖子

288

积分

中级会员

Rank: 3Rank: 3

积分
288
QQ
跳转到指定楼层
楼主
发表于 2024-12-30 15:56:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
纯小白刚在研究自学,想请问大神个问题
不知用什么线程池好,可以用数组开池(因为不知用多少个池),每个池子里有多个线程,不同池对应不同类型的任务。
比如说,报表中有100行。1-50行用一个池子让它从1-50慢慢按顺序执行。另一个池子从50-100,也是慢慢从50-100执行。开两个池,是为了同时执行1-50的和50-100的报表项上的任务等


麻烦大神抽空帮写个例子,非常感谢!
:噜阿噜 道生易 易生万物 Q516221198
回复

使用道具 举报

50

主题

605

帖子

3286

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3286
沙发
发表于 2024-12-30 16:11:44 | 只看该作者
一个电脑,同时运行的线程数是固定的,开1个池就能跑满了,开那么池干什么呀,
回复

使用道具 举报

7

主题

63

帖子

288

积分

中级会员

Rank: 3Rank: 3

积分
288
QQ
板凳
 楼主| 发表于 2024-12-30 16:25:03 | 只看该作者
suyan 发表于 2024-12-30 16:11
一个电脑,同时运行的线程数是固定的,开1个池就能跑满了,开那么池干什么呀,
...

因为想同时执行不同的任务,每个线程池都 有一定的任务量,但不同的池有着不同的任务。
是想让不同的任务量能同时执行。
就好比,有三个人,每个人去做十件不同的事,他们各做各的,但是同时执行的。
而不是所有事全部一起做。

或者有什么别的方式么?

一个报表中一般是有一千行,比如每100行是一个线程做的,这样就需要10个线程。
我只是想说,如何让这十个线程同时去做自己的那一百行任务,而那每个线程的一百个任务是需在一个一个的去执行的
:噜阿噜 道生易 易生万物 Q516221198
回复

使用道具 举报

50

主题

605

帖子

3286

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3286
地板
发表于 2024-12-30 16:35:57 | 只看该作者
一个线程池即可,不同用户标记,做不同任务
回复

使用道具 举报

7

主题

63

帖子

288

积分

中级会员

Rank: 3Rank: 3

积分
288
QQ
5#
 楼主| 发表于 2024-12-30 16:36:53 | 只看该作者
suyan 发表于 2024-12-30 16:35
一个线程池即可,不同用户标记,做不同任务

嗯嗯,我现在正在研究,还不懂,大神有空么?麻烦帮我写个例子呗,万分感谢
:噜阿噜 道生易 易生万物 Q516221198
回复

使用道具 举报

7

主题

63

帖子

288

积分

中级会员

Rank: 3Rank: 3

积分
288
QQ
6#
 楼主| 发表于 2024-12-30 17:15:32 | 只看该作者
suyan 发表于 2024-12-30 16:35
一个线程池即可,不同用户标记,做不同任务

谢谢,我用https://bbs.voldp.com/forum.php?mod=viewthread&tid=14940
线程池,有一个线程id来区分线程,分别执行了对应的表项任务,算是实现了我的想法了

  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 线程池类_线程运行 <接收事件 类型 = 整数 折叠>
  3. 参数 来源对象 <类型 = 线程池类>
  4. 参数 标记值 <类型 = 整数>
  5. 参数 线程ID <类型 = 整数>
  6. 参数 线程句柄 <类型 = 变整数>
  7. 参数 用户参数 <类型 = 变整数>
  8. 参数 退出事件 <类型 = 变整数>
  9. {
  10.     如果 (来源对象 == 线程池1)
  11.     {
  12.         // 标签1.调用反馈事件 (0, 线程ID, 假)  // 线程中不能直接更新窗口界面,可能会导致死锁. 下同
  13.         调试输出 (线程ID)

  14.         如果 (线程ID == 1)
  15.         {
  16.             计次循环 (超级列表框1.取表项数 ())
  17.             {
  18.                 如果 (超级列表框1.取标题 (取循环索引 (), 2) == "1")
  19.                 {
  20.                     超级列表框1.置标题 (取循环索引 (), 3, "执行1")
  21.                     程序_延时 (5, 1)
  22.                     超级列表框1.置标题 (取循环索引 (), 3, "完成1")

  23.                     // 标签1.调用反馈事件 (1, 取循环索引 (), 假)
  24.                 }

  25.             }

  26.         }

  27.         如果 (线程ID == 2)
  28.         {
  29.             计次循环 (超级列表框1.取表项数 ())
  30.             {
  31.                 如果 (超级列表框1.取标题 (取循环索引 (), 2) == "2")
  32.                 {
  33.                     超级列表框1.置标题 (取循环索引 (), 3, "执行2")
  34.                     程序_延时 (5, 1)
  35.                     超级列表框1.置标题 (取循环索引 (), 3, "完成2")

  36.                     // 标签1.调用反馈事件 (2, 取循环索引 (), 假)
  37.                 }

  38.             }

  39.         }

  40.         // 进行你自己的工作 ...
  41.         // 标签1.调用反馈事件 (2, 线程ID, 假)
  42.     }
  43.     返回 (0)
  44. }
复制代码


:噜阿噜 道生易 易生万物 Q516221198
回复

使用道具 举报

50

主题

605

帖子

3286

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
3286
7#
发表于 2024-12-30 22:10:14 | 只看该作者
jcos 发表于 2024-12-30 17:15
谢谢,我用https://bbs.voldp.com/forum.php?mod=viewthread&tid=14940
线程池,有一个线程id来区分线程 ...

仰望大佬的线程池2.投递任务时的第1个参数,就可以用来区分不同任务
回复

使用道具 举报

7

主题

63

帖子

288

积分

中级会员

Rank: 3Rank: 3

积分
288
QQ
8#
 楼主| 发表于 2025-1-1 01:50:55 | 只看该作者
suyan 发表于 2024-12-30 22:10
仰望大佬的线程池2.投递任务时的第1个参数,就可以用来区分不同任务

好的,谢谢,我研究一下先
:噜阿噜 道生易 易生万物 Q516221198
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-4 06:26 , Processed in 0.094559 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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