Dwi*_*son 4 concurrency haskell
在Haskell中,forkIO创建一个未绑定(Haskell)线程,forkOS创建一个绑定(本机)线程.这里的前一个问题的答案我已经提到Haskell线程不能保证保持在同一个OS线程上,这似乎得到了Control.Concurrent模块文档的支持.我的问题是,如果正在运行的Haskell线程被交换到另一个OS线程,它的ThreadID是否会保持不变?
是.
A
ThreadId是表示线程句柄的抽象类型.
这是您向特定线程发送异步信号的方法:使用ThreadId.涉及哪个OS线程无关紧要,并且目标线程通常很可能根本不绑定到任何OS线程(例如,它正在休眠).
"操作系统线程"的存在在某种程度上是一个实现细节,但如果您将FFI与某些库一起使用,则需要对它们进行管理.否则,您通常可以忽略代码中的OS线程.