gpt4 book ai didi

multithreading - 在 Haskell 中创建 100 万个线程需要多长时间?

转载 作者:行者123 更新时间:2023-12-03 21:27:28 25 4
gpt4 key购买 nike

据我了解,Haskell 有绿色线程。但是它们的重量是多么的轻。是否可以创建 100 万个线程?

或者 100 000 个线程需要多长时间?

最佳答案

来自 here .

import Control.Concurrent
import Control.Monad

n = 100000

main = do
left <- newEmptyMVar
right <- foldM make left [0..n-1]
putMVar right 0 -- bang!
x <- takeMVar left -- wait for completion
print x
where
make l n = do
r <- newEmptyMVar
forkIO (thread n l r)
return r

thread :: Int -> MVar Int -> MVar Int -> IO ()
thread _ l r = do
v <- takeMVar r
putMVar l $! v+1

在我不太 2.5gh 的笔记本电脑上,这需要不到一秒钟的时间。

将 n 设置为 1000000 并且很难写这篇文章的其余部分,因为操作系统正在疯狂地分页。肯定使用的内存不止一个(没有让它完成)。如果您有足够的 RAM,它肯定会在 100000 版本的适当时间的 10 倍内工作。

关于multithreading - 在 Haskell 中创建 100 万个线程需要多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1900165/

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