gpt4 book ai didi

haskell - 如何检测程序是否已使用 -thread 编译?

转载 作者:行者123 更新时间:2023-12-03 23:42:49 25 4
gpt4 key购买 nike

我正在开发一个使用 POSIX fork/exec 和文件锁定机制的 Haskell 守护程序。我的实验表明在 executeFile 期间不会继承文件锁。与 -threaded运行时(另见 this thread ),无论我是否使用 +RTS -N或不。所以我想添加一个检查以确保守护进程没有使用 -threaded 编译。 .有没有一种便携的方法来检测它?

最佳答案

有一个valueControl.Concurrent为此,例如:

module Main (main) where

import Control.Concurrent

main :: IO ()
main = print rtsSupportsBoundThreads

并测试:
$ ghc -fforce-recomp Test.hs; ./Test
[1 of 1] Compiling Main ( Test.hs, Test.o )
Linking Test ...
False
$ ghc -fforce-recomp -threaded Test.hs; ./Test
[1 of 1] Compiling Main ( Test.hs, Test.o )
Linking Test ...
True

它是 C 部分 source code :
HsBool
rtsSupportsBoundThreads(void)
{
#if defined(THREADED_RTS)
return HS_BOOL_TRUE;
#else
return HS_BOOL_FALSE;
#endif
}

关于haskell - 如何检测程序是否已使用 -thread 编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22839824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com