gpt4 book ai didi

haskell - 确保在 Haskell 中的线程之间均匀分配 CPU 时间

转载 作者:行者123 更新时间:2023-12-04 04:47:02 25 4
gpt4 key购买 nike

我有一个用 Haskell 编写的规划算法,它的任务是在给定的时间内评估一组可能的计划,其中评估过程可以运行任意时间以产生越来越准确的结果。最自然且据称最有效的方法是为每个评估任务提供自己的轻量级 Haskell 线程,并让主线程在休眠指定时间后获取结果。

但实际上,在整个可用时间内,总会有一两个线程 CPU 不足。我自己用信号量/等来控制执行的实验表明,这出奇地难以修复,因为我似乎无法强制给定线程停止执行(包括使用来自 Control.Concurrent 的“yield”。)

是否有一种众所周知的方法来确保任意数量的 Haskell 线程(不是 OS 线程)在挂钟时间的(相当短的)跨度内接收大致均匀的 CPU 时间?如果做不到这一点,是否有一种好方法可以确保在给定数量的内核上执行相同迭代的多个线程相当“轮流”,以便使用所有内核?

最佳答案

AFAIK,只要 Haskell 线程都在积极尝试工作,它们都应该获得大致相等的 CPU 功率。不会发生的唯一原因是如果他们开始进行阻塞 I/O 调用,或者每个线程只运行几毫秒或什么的。

也许您看到的问题实际上是每个线程只运行一瞬间,产生一个未评估的表达式作为其结果,然后主线程评估自己?如果是这种情况,看起来主线程正在获取所有 CPU 时间。

关于haskell - 确保在 Haskell 中的线程之间均匀分配 CPU 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18027408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com