Haskell ForkIO 将线程数限制为特定值
Haskell ForkIO limit number of threads to certain value
似乎 ForkIO 创建的线程数与我使用的 Haskell 程序中的内核数一样多
-- | Fork a thread in checker monad.
fork :: Checker a b () -> Checker a b ()
fork act = do
s0 <- get
void $ liftIO $ forkIO (curTGroup s0) $ evalChecker act s0
occurs :: Eq a => a -> [a] -> Int
occurs x = length . filter (x==)
Haskel ForkIO 的新手,我想使用 setNumCapabilities 设置线程数量。
尝试添加
let setNumCapabilities = 1
Haskell 对未使用的变量发出警告,但没有任何效果。
如何正确操作?
setNumCapabilities :: Int -> IO ()
是一个 函数 。因此,您可以在代码中使用它:
import Control.Concurrent(setNumCapabilities)
fork :: Checker a b () -> Checker a b ()
fork act = do
s0 <- get
void $ liftIO $ do
<b>setNumCapabilities 1</b>
forkIO (curTGroup s0) $ evalChecker act s0
或其他地方,例如在 main
函数中。
似乎 ForkIO 创建的线程数与我使用的 Haskell 程序中的内核数一样多
-- | Fork a thread in checker monad.
fork :: Checker a b () -> Checker a b ()
fork act = do
s0 <- get
void $ liftIO $ forkIO (curTGroup s0) $ evalChecker act s0
occurs :: Eq a => a -> [a] -> Int
occurs x = length . filter (x==)
Haskel ForkIO 的新手,我想使用 setNumCapabilities 设置线程数量。
尝试添加
let setNumCapabilities = 1
Haskell 对未使用的变量发出警告,但没有任何效果。
如何正确操作?
setNumCapabilities :: Int -> IO ()
是一个 函数 。因此,您可以在代码中使用它:
import Control.Concurrent(setNumCapabilities)
fork :: Checker a b () -> Checker a b ()
fork act = do
s0 <- get
void $ liftIO $ do
<b>setNumCapabilities 1</b>
forkIO (curTGroup s0) $ evalChecker act s0
或其他地方,例如在 main
函数中。