Pet*_*lák 13 concurrency haskell process ghc
我正在使用一个Haskell守护进程,它使用POSIX fork/exec和文件锁定机制.我的实验表明,文件锁定期间不继承executeFile
与-threaded
运行时(见这个线程),如果我用,不管+RTS -N
与否.所以我想添加一个检查,以确保守护进程没有编译-threaded
.有可行的方法来检测它吗?
Fed*_*lev 14
有一个值,在Control.Concurrent
这一点,例如:
module Main (main) where
import Control.Concurrent
main :: IO ()
main = print rtsSupportsBoundThreads
Run Code Online (Sandbox Code Playgroud)
并测试:
$ 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
Run Code Online (Sandbox Code Playgroud)
它是C部分的源代码:
HsBool
rtsSupportsBoundThreads(void)
{
#if defined(THREADED_RTS)
return HS_BOOL_TRUE;
#else
return HS_BOOL_FALSE;
#endif
}
Run Code Online (Sandbox Code Playgroud)