【发布时间】:2021-08-24 02:19:24
【问题描述】:
我想并行运行 2 个进程,一个等待输入,一旦它得到它就改变一个变量的状态,另一个进程不断在屏幕上打印一些东西,两者都以一种方式进行通信,第一个进程收集的输入可以修改其他进程在屏幕上打印的内容
问题是我希望第二个进程在屏幕上不断打印,而另一个进程正在等待输入,但我唯一得到的是第二个进程阻塞,直到第一个进程获得输入然后继续,我正在使用窗户
main = do
r <- newMVar (4,4)
forkIO (act1 r)
act2 r
where
act1 r = forever $ do
dot <- takeMVar r
c <- getCharNoBuffering
putMVar r (newDot dot c)
act2 r = do
forM_ [1..20] $ \_ -> do
dot <- takeMVar r
print (position dot)
putMVar r (newDot dot)
【问题讨论】:
标签: concurrency parallel-processing