19_MemoriaTransacional_PC.pdf

download 19_MemoriaTransacional_PC.pdf

of 5

Transcript of 19_MemoriaTransacional_PC.pdf

  • 7/25/2019 19_MemoriaTransacional_PC.pdf

    1/5

    3/14/13

    1

    !"#$%&')%'*+',&-*'.

    !"#$%&' /%'*+',&-*'. 0" +-12'%"

    34)!5

    ! 6"7&8"+ 0' #"#$%&' 9+'0'+ 0"*/%- 0" /%'*+':8"+

    ! ;./"%*',.9+?- #@/9'

    ! A"#B%'*0-CMVar+ +?- D-*'+ 0" ">,.9+?- #@/9'

    !

    ;&*0' E 9# /$F&,- 0" F"+G9&+'

    ! !'+ H'+I".. /"# 9#' F."#"*/':?- %-B9+/'

    ! !"#$%&' /%'*+',&-*'. /'#BE# F-0" +"%

    F."#"*/'0' "# J'%02'%"

    K-% G9" #"#$%&' /%'*+',&-*'.L

    ! !"*-+ ,-#F.&,':?- F'%' - F%-7%'#'0-%

    ! )%'='+ +?- #9&/- 0&M,"&+ 0" 7"%"*,&'%

    ! 4)! NO '/-#&,&0'0" P &+-.'#"*/-

    ! Q RS,&. ,-#F-% /%'*+':8"+

    ! T?- JS B.-G9"&- 3G9'+"5

    ! A-7-U *?- JS !"#!$%&'(

    ! ! #$%&'(')*C5

    ! !'+ F-0" +"% ' F%S

    ! X +" '+ 09'+ *+,"#!(/"*/'%"# "+,%"="% "#balL

    4)! "# ':?-

    x2

  • 7/25/2019 19_MemoriaTransacional_PC.pdf

    2/5

    3/14/13

    2

    4)! "# ':?-

    T1

    T2

    1

    x1

  • 7/25/2019 19_MemoriaTransacional_PC.pdf

    3/5

    3/14/13

    3

    4)! "# ':?-

    T1

    writeTVar bal (x1 + 2)13

    4)! "# ':?-

    T1

    13Fim da

    transaode T2!

    ;.79#'+ 0"[*&:8"+ F-%/'*/"+

    data TVar a

    readTVar :: TVar a -> STM a

    writeTVar :: TVar a !> a -> STM ()

    newTVar :: a -> STM (TVar a)

    retry :: STM a

    orElse :: STM a -> STM a !> STM a

    \-*/'0-% /%'*+',&-*'.

    ...

    import Control.Concurrent.STM

    main :: IO ()

    main = do contador Int) -> TVar Int ->

    MVar Int -> Int -> IO()

    oper op cont fim 0

    = do f Int) -> TVar Int ->

    MVar Int -> Int -> IO()

    oper op cont fim 0

    = do f

  • 7/25/2019 19_MemoriaTransacional_PC.pdf

    4/5

    3/14/13

    4

    \-*/'0-% /%'*+',&-*'. \^66_`_]^

    oper :: (Int->Int->Int) -> TVar Int ->

    MVar Int -> Int -> IO()oper op cont fim 0

    = do f "#F.- B'*,S%&-

    import ...

    waitThreads :: MVar Int -> IO()

    ...

    main::IO()

    main = do

    bal

  • 7/25/2019 19_MemoriaTransacional_PC.pdf

    5/5

    3/14/13

    5

    V# -9/%-">"#F.- B'*,S%&-

    import ...

    main::IO()

    main = dobal TVar Float -> IO ()

    makeInvestment acc inv =

    do

    atomically(

    do

    a