2014-01-08 10 views
3

에서 TVAR의 값을 보면, 나는 다음과 같은 코드를 가지고 : 나는 GHCi REPL이를 테스트하기 위해 노력하고<a href="https://www.fpcomplete.com/school/advanced-haskell/beautiful-concurrency/3-software-transactional-memory" rel="nofollow">Simon Peyton Jones</a> 동시성 예를 통해 작업을 GHCi

import Control.Concurrent.STM 
import Control.Concurrent.STM.TVar 

deposit account amount = do 
    bal <- readTVar account 
    writeTVar account (bal+amount) 

*Main> checking <- atomically $ newTVar 100 
*Main> atomically $ deposit checking 10 

어떻게 내가 할을 내 체납 잔액이 110 달러인지 확인 하시겠습니까?

나는

*Main> checking 
*Main> readTVar checking 
*Main> balance <- readTVar checking 

답변

6

atomically $ readTVar checking 당신이 원하는 것을 노력했다. GHCi REPL은 사용자가 지정한 모든 IO 작업을 자동으로 실행합니다.

+2

이 간단한 경우에는 'readTVarIO'도 있는데, 이는 '원자 적으로'와 동일합니다. readTVar'하지만 더 효율적입니다. –