在Warp个应用程序中,Settings数据类型上提供了settingsFork
选项。这允许人们选择不同的叉模型。应该何时将其设置为默认值(void . forkIOWithUnmask
)以外的其他值?做出此决定时应考虑哪些因素? (例如,IO与CPU绑定/使用FFI)。
答案 0 :(得分:1)
如果您要操作线程本地状态(因为未绑定的Haskell"线程"可能在不同的OS线程上运行),您可能希望使用forkOS
来创建绑定线程,因此破坏了首先使用线程局部存储的整个想法。文档提到了OpenGL作为一个可能的例子。总的来说,我发现很难想出一个你不想要默认实现的情况,它利用了内置的绿色线程系统。它获得了GHC的调度程序hard to beat的智慧。