並行マルチコアプログラミング
Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan,John Goerzen,Don Stewart
オライリージャパン / ¥ 3,990 ()
在庫あり。
Bryan O'Sullivan,John Goerzen,Don Stewart
オライリージャパン / ¥ 3,990 ()
在庫あり。
import Control.Concurrent
communicate = do
m <- newEmptyMVar
forkIO $ do
v <- takeMVar m
putStrLn ("received" ++ show v)
putStrLn "sending"
putMVar m "wake up!"
- Control.ConcurrentのforkIOを使う
- 同期変数型MVarを使う
- MVarはデッドロックの原因になることがある
- tryTakeMVarとtakeMVarの違い
- スレッド間で一度だけ通信する場合にはMVarがよい。それ以外はChan型を使う
- MVar,Chanは非正格