haskell - 在 Haskell 中识别函数的当前 HEC

标签 haskell parallel-processing

我正在使用 Strategies 编写一个并行的 Haskell 程序。它没有做它应该做的事情,我想检查一个函数是在哪个 Haskell 执行上下文 (HEC) 中执行的。

是否有我可以在调试输出中使用的 getHEC 调用或类似的调用?

最佳答案

您可以通过调用 threadCapability 找出运行 Haskell 线程的功能(即 CPU 内核)。来自 Control.Concurrent .

如果您使用 +RTS -N 运行您的程序,每个内核将产生一个操作系统级线程 (HEC),因此 threadCapability 返回的功能编号会告诉你是哪个操作系统线程你的 forkIO绿色线程正在运行。但是,如果您使用 +RTS -Nn 明确指定操作系统线程数,其中 n是除系统内核数之外的某个整数,这对您来说可能不太有用。

您可能还会找到 ThreadScope可用于调试和可视化并行程序的执行。

关于haskell - 在 Haskell 中识别函数的当前 HEC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10105127/

相关文章:

java - 通过观察者从线程使用列表中仅获取最新元素

java - 为什么我的多线程排序算法不比我的单线程归并排序快

java - 使用 parLapply 将数据帧写入 Oracle 数据库时出现 JVM 错误

openmp - 如何使用 OpenMP 并行化数组移位?

parsing - 在 Haskell 中使用 Alex 制作解析骰子卷的词法分析器

haskell - 使用惰性文本和字节字符串处理非常大的文本文件

Haskell 错误 : "lacks an accompanying binding" and "not in scope"

php - PHP 中的多线程、多 curl 爬虫

optimization - 为什么 GHC 在内联时考虑 LHS *语法*?

Haskell:了解与 lambda 函数一起使用时的映射函数