domingo 发表于 2024-12-12 07:31:41

火山的线程池多线程任务框架,应该怎么写?

易语言那边,鱼刺线程池估计是大名鼎鼎的,学习易语言的时候,就一直使用下面这套鱼刺多线程框架,稳定奔放。



昨晚使用乐易火山模块,也有个类似易语言鱼刺的线程池Ex类,但是我自己照搬写出来的火山多线程框架,效果完全不一样,尤其是取空闲线程数,一直增加,不明所以。

所以,有大佬能参照易语言这套多线程框架,帮忙改个火山多线程框架的例子,学习下吗?

附上易语言版本的鱼刺多线程任务框架例子(包含了启动线程、临界许可):



揰掵佲 发表于 2024-12-12 07:31:42



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

方法 线程_Demo
{
    变量 线程池 <类型 = 类_线程池Ex>
    变量 线程数 <类型 = 整数>
    变量 任务数 <类型 = 整数>
    线程数 = 3
    任务数 = 10
    如果 (线程池.创建 (线程数, 线程数, , , ) == 假)
    {
      线程池.销毁 (, , )
      调试输出 ("线程池创建失败")
      返回
    }
    否则
    {
      调试输出 ("线程池创建成功,开始进行线程投递")
    }
    变量 已完成任务 <类型 = 整数>
    变量 欲投递任务数 <类型 = 整数>
    信息框_ ("开始")
    判断循环 (已完成任务 < 任务数)
    {
      欲投递任务数 = 线程池.取_空闲线程数 ()
      如果 (欲投递任务数 > 任务数 - 已完成任务)
      {
            欲投递任务数 = 任务数 - 已完成任务
      }
      计次循环 (欲投递任务数)
      {
            线程池.投递任务 (取指针_方法 (任务线程), 已完成任务, )
            线程池.等待任务动态 (500, )
            已完成任务 = 已完成任务 + 1
      }
    }
    判断循环 (线程池.取_是否空闲 () == 假)
    {
      程序_延时 (1, 1)
    }
    线程池.销毁 ()
    调试输出 ("任务完成!")
}

方法 任务线程 <静态>
参数 索引 <类型 = 整数>
{
    调试输出 ("执行线程任务" + 到文本 (索引))
    程序_延时 (10000, )
}
页: [1]
查看完整版本: 火山的线程池多线程任务框架,应该怎么写?