【发布时间】:2012-07-17 11:54:52
【问题描述】:
在 Haskell 中,forkIO 创建了一个未绑定(Haskell)线程,而 forkOS 创建了一个绑定(本机)线程。我之前提到过的问题here 的答案是不能保证Haskell 线程保持在同一个操作系统线程上,Control.Concurrent 模块的文档似乎支持这一点。我的问题是,如果一个正在运行的 Haskell 线程被交换到另一个 OS 线程,它的 ThreadID 会保持不变吗?
【问题讨论】:
-
forkOS 不会创建新的操作系统线程,它将轻量级线程绑定为仅在单个操作系统线程上运行。这对于像 OpenGL 这样在幕后使用线程特定数据的东西很重要。
标签: haskell concurrency