19_MemoriaTransacional_PC.pdf
-
Upload
danilo-dias -
Category
Documents
-
view
213 -
download
0
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