识别Haskell中函数的当前HEC

时间:2012-04-11 11:37:05

标签: haskell parallel-processing

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

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

1 个答案:

答案 0 :(得分:4)

通过从threadCapability调用Control.Concurrent,您可以找出正在运行Haskell线程的功能(即CPU核心)。

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

您可能还会发现ThreadScope对于调试和可视化并行程序的执行非常有用。