jcos 发表于 2024-12-30 15:56:40

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

纯小白刚在研究自学,想请问大神个问题:handshake
不知用什么线程池好,可以用数组开池(因为不知用多少个池),每个池子里有多个线程,不同池对应不同类型的任务。
比如说,报表中有100行。1-50行用一个池子让它从1-50慢慢按顺序执行。另一个池子从50-100,也是慢慢从50-100执行。开两个池,是为了同时执行1-50的和50-100的报表项上的任务等
:hug:

麻烦大神抽空帮写个例子,非常感谢!

suyan 发表于 2024-12-30 16:11:44

一个电脑,同时运行的线程数是固定的,开1个池就能跑满了,开那么池干什么呀,

jcos 发表于 2024-12-30 16:25:03

suyan 发表于 2024-12-30 16:11
一个电脑,同时运行的线程数是固定的,开1个池就能跑满了,开那么池干什么呀,
...

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

或者有什么别的方式么?

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

suyan 发表于 2024-12-30 16:35:57

一个线程池即可,不同用户标记,做不同任务

jcos 发表于 2024-12-30 16:36:53

suyan 发表于 2024-12-30 16:35
一个线程池即可,不同用户标记,做不同任务

嗯嗯,我现在正在研究,还不懂,大神有空么?麻烦帮我写个例子呗,万分感谢:victory:

jcos 发表于 2024-12-30 17:15:32

suyan 发表于 2024-12-30 16:35
一个线程池即可,不同用户标记,做不同任务

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

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

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

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

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

            }

      }

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

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

            }

      }

      // 进行你自己的工作 ...
      // 标签1.调用反馈事件 (2, 线程ID, 假)
    }
    返回 (0)
}


suyan 发表于 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个参数,就可以用来区分不同任务

jcos 发表于 2025-1-1 01:50:55

suyan 发表于 2024-12-30 22:10
仰望大佬的线程池2.投递任务时的第1个参数,就可以用来区分不同任务

:victory:好的,谢谢,我研究一下先
页: [1]
查看完整版本: 【求助】n个线程池是如何动态调用的呢?谢谢!