Haskell中的绑定与未绑定线程

wfauudbj  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(90)

我试图准确地理解绑定线程在Haskell中是如何实现的。
我可以通过传入-N[n]标志来示例化多个解析器。这些编译器是否在单独的操作系统线程上执行?
通过使用Control.Concurrent中的forkOS,我创建了一个绑定线程。现在,文档声明线程仍然由Haskell运行时系统调度,但它看起来就像是使用pthread_create创建的任何外部函数。这实际上是如何实现的?所有外部调用都将从同一个OS线程进行,这样它们就可以访问线程本地状态,但是是否有可能多个绑定线程被固定到同一个OS线程?
我想我是在试图理解什么时候创建了 * 实际的 * OS线程,以及如何实现Haskell线程 * 看起来 * 被绑定。

yhived7q

yhived7q1#

我可以通过传入-N[n]标志来示例化多个编译器。这些编译器是否在单独的操作系统线程上执行?
是的
所有外部调用都将从同一个OS线程进行,这样它们就可以访问线程本地状态,但是是否有可能多个绑定线程被固定到同一个OS线程?
不,但我相信OS线程有时也会执行未绑定的Haskell线程。我相信这些Haskell线程在跳转到外部调用之前会被推送到另一个调度器(如果有的话)。

相关问题