Vous êtes sur la page 1sur 9

Software Transactional Memory for Dynamic-Sized Data

Structures
Maurice Herlihy

Victor Luchangco

Computer Science Dept.


Brown University
Providence, RI 02912, USA

Sun Microsystems Laboratories


1 Network Drive
Burlington, MA 01803, USA

mph@cs.brown.edu

victor.luchangco@sun.com

Mark Moir

William N. Scherer III

Sun Microsystems Laboratories


1 Network Drive
Burlington, MA 01803, USA

Computer Science Dept.


University of Rochester
Rochester, NY 14620, USA

mark.moir@sun.com

scherer@cs.rochester.edu


 

  
  































 

















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

.    
 





 



0


















































1

 
  
   
    
































































  



 0    
 
  

 

   

 






 3










 
 2










       5 
  




 



 4  




 







     

 








6 


 













7
































  8    

  







 
 


  

    
  
    
 
   


9  




 
 
 
  
 

2  
6   
 

ABSTRACT

1. INTRODUCTION

Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies
bear this notice and the full citation on the first page. To copy otherwise, to
republish, to post on servers or to redistribute to lists, requires prior specific
permission and/or a fee.
PODC 2003, July 1316, 2003, Boston, Massachusetts, USA.
Copyright 2003 Sun Microsystems, Inc. All rights reserved.
1-58113-661-7/03/0006 ... 5.00.

   92



       
 
  











 '& >*#?=$+@$=("=&#' (=AB+-$< C  
;<(=    
      11DE#$ =("=&


#' (








&8
&
2 
 
 -'#" 




'
#
 5F 




=




5    5   
 
 
A '(+=$='G=!!A$+#"
HIJ 8   




 





   2 



 

  








 F 





K    



E
 






 

    





 5 /
L





















  
   

    H

MJ

1






 
 
 
 N

 

   















RQOQPQ
SJ ,<(=-'&

   D 
HOPQ
T



    


  


T  

E
C
 
  F


 

 




K





  









F 







   















  

 


K   






 

K  C






1










































 














WX   

   C





   
E  
  7UU  
V V










  2





  





V
.








2



   C6LYZ[Z\]^_`\abca]ddec^ HQJ
   4  
   T  


 N  3





F






 
    3  




4 


  




      

     
  












  
   !" 







 

1
J

*





'
#
#


  

$
%&
(
$++H


)





   









     











 
 
   
6 













 











 






















        


  












  














 
 A' +A
&/        

  



 





QQJ    1








H


 


0
       
 
 

 

 
  









   



6






 



 
 
 

    T      







5       2  
. 
 

C


 
     


 
   
 E 
 




 
 

    
  & 

















'
#
#


(
+(
(-=(=

+$




















     













  4
     
   















3

 


 





 

 2

  


















 
    
 
 
   


















   
 
    

0    
  




 
         
 
   

5   
 

 
 
2  




 

  
  C



C

   2


  
   
 



  
 C













 






2
 

        










 



12









.



















































J












 

 H  


  

0 T F



 













0






E






















         

 




5




 












O






 





    


















 




E    
 T














       
 
 




P

 



  















S









 
  




2  
 7 
  
   C









C






7 













2
     H
J 

C 

E    
 2
   C





 



'
#
#
1 #
$=("=& #' (= A! +&#"     
$
=("=&
("




















! $#K" 1 1 
   & 
   
--'#"=V
K  


K   +('( 
 
  

 
  7 K
 



K




  
K 

  


 E 
  












 5 /   


  
    

K  

   

 












K
   

































































7 


V







6








2








deZ



d]c

   


 V E 
  
   










deZ
































    
  
      
  











   
K  


 

 

Yea^

  

 









    

^

b]c
ed








Yea^   8

b]c^Yeaedab]c

^^^edYea^  cece b]c^Yeaed^ab]c
^ed

K










 


 

1    K









`

`









bceZ
e

 K   2
 
 
    F



K



a `bce






C
K K   C























   


 








K     
  a `bce 

  
  
   

  e_c 
dZcZa ^_bc =& #'+
. 





 1    


           








      bec8
b]c^b]cedab]c
 ^^edYea^\bec !
^
ed
ab]c^ed\_ca"" _cadeec^^eab]c^ed


    



 b ecK   


 
 & <





b
ec



#   
V K    
   KL   +$" 
L 'a(`bce 

 / 
 




  
K 


 C





 




  
 





  
      



      





  
L  $

 
  
 
#   
 

  
K     
b\`Zcec\Yea
 ^   






YZ[Z
2


 b]c^ed
2. OVERVIEW AND EXAMPLES

    K    


   K   

/ 
 
  






  

 
   
1 _^dZcZa 




#
^_
ab 

bc


$
%+





  



^1dZc  Za^_

   
 Z   bd 



bc

 A'( +=$'G= !A +8 
 







2 







 

  
  
.

 
  














L 

K

   
  






















 

 


K2 
  



  

    


92





    






K





















 

K









  






F


5






E























 
 2




 



5       
















C

 


  
K =A ',=#'(  





 
  

     














 



K






  
 

   E 








  






bec   
 2
       
ec _
e





















    





 










  8b ecT 
  K   
  2









 





     K   
 













 52 












       

  C    


    
 

 





    












 










 F




 

 2
  

0  
  
 





C











  

  

  
       





c7^e^  





 2 
_ced^ 
e`e^e eed


9 ,+"

 c^$e ^


AQ '"#



K








8(



_K^    
Yea^
+-+(


 _

V+A
K#" /

 

^     T8[Z`]e
 

2    
  Yea ^
ce^     ceYea^^ 







  
    T
 
  
 
 









      
 





  

 c ^ e^






2


















 /    




9  

_


^
ed  
   
c
#$%+     E T   
 
 
*=A"+ 
.

  

 

 






  




2



    
2.1 Extended Example

]_c`_^aa[Z``]eZ_^

Yea^ ce^
`Z c^e^
]`__aa
d [Z^e Yea^ _d^
^^e^_^ 
]`_
_^a c_dce
^ _d_^\ __d^^\ce_^ce^c^eedYea\^ _d^_^

ce Yea^ce _^c^eed\ 


]`_a bb`eZc _ced^_c^ [!
_^Yeace^ce_^ bcee  ce^_db^[Yea^aece^_bc_^ 

deZ ^deZ 
  
 
^d]e deZ deZ \a]ddec^ deZ 
e
_`
\e_cdZcZa^_bc
^deZ`eZcde
bb
^d_ ^ de[]`^_^^d]e
 ^^_\ _d^\bec !
_^__a]dd
_^_^ ce^ bec !
de[
^

\
\
_
`
^


Z
 [
_`e a]dd
[
]e
\
_
^
^

a]dd


de[_


_  _^\ce^\bec !
a]dd
_^^a]dd

_  _ ^ ` 
a]dd
 Z\[Z
]e
 [
`^
`


e
de
]


e`e`^ ^
de]_^\ced]e^ 

b_^e\ce^
ce
de[
_

^
^


e

de[
c


ce

\

_
aZ^^a ec_e_^
^_ 
ab
deZ
`^
 dZcZa bc
\
^

de
]dcde
]


\\\



  !"#

 
   

   E 

 

 
















   4
  
1   
 


4
    3 

  
3














 

 








 















F












  
  
     
      





 
 
 

E  

 
 








 1/







C




  








e 2 
  
   5 
 
  
  F


_
 


ec
      
  
 
 
  
  









] `_a bb`eZc e`e^e ^_c^db[ ae ^_bc


deZ ^ deZdeZ deZ \a]ddec^ deZ
e ^d]e
^_`bbdeZ
e _c]`^dZc Za^d]e^_bc
\
`
eZcde
^d Yea^`Z ^ b e c]``
^ de[
b e ^ _ \_d ^
_ ^Yea
_
^
de[
^ de[_ ^b e\b ec
_ ^__a]dd
_^^\[Z\ce`]e^\b ec[
_`_ e ^`Za]ddde[
_
^b be\dee`eZc]e``
`
^
Z
`de[
Z ^ bb ee de[
b_ ^e\ce ^
de[
de[ __ ^^ a]dd _ ^
a]dd
_ ^ a]dd _ ^\ce ^\b ec
_ dea]dd
_ ^Z\[Z` `e]e [
`^
]
` ]e`^ ^d]e
deede[
__ ^^\ce ^_\b^ecde[ b e\b ec
de[
de[ _ ^\ce ^ a]dd _ ^\ce ^
adeZ ec\ab_e _^ dZc Za^_bc
_ deaZ^^^]dcde
`^
]

  
 
  ! 
    
  
 
     




  
     
       
       !
        !
  
      
    
      
    
      !


    



  
       !   !
   











   







 
  
  K    


1 












    











 

 



  
















P


  

c^ e









  






K





^









 

  92
    
     
   
eed     
  . 
   
  
 _ ced^     

  

 


  


T 
      

  

























     
   
 C
 



 
  


 





























C

 
 




  
   
















.












 







 
   K
    




 











  





7K  


    









_^`_^  _^ cbe\bec!

 T
   

   
_ced^





 
 E 3



    !
 

4   


K




 






  #!
 # # 

















 


















$

  




 


      
 















K













 








C
















5
































`



  





de
eZ

e








K



C






















A
K


















$+
+
="+















`


!



eZ
e     bec /
 
de


!
   

 . K


ec!   de` eZ eK   .

        K K  
b
 
         K 



  

!
     


F





  K
  


























 

/


!



K






















K

4



!











3










     
  
    







  





K











F
F
















































/ 







K
  /

















 


7















 
















  K             
    
 
     5    
   






























































 




2

 




c^ e
 
 

  




E  

^
2








  
 


     
 
  



 
   9 
 
! 1


 



C

#












$
=("=&
)







1


















T
K




'
#




^_
^
^
(





Za
bc


Z




dZc
]














de[  1     








 !       !








T
4







3

 












         


!









 

  
  ! 

 1 











_

^


b
 a e   2
     C
!
  
 
 E    1Z2
 

  


 e 


8
Z
ec  




  T  





E




c






Z

71   
  2
 
   0   
e

#$%+/

  
   K     J 


c
Z



,

.









"%&&++
"






71





*







A






S















F







H


=
"
+





/


71








*
A


'





        
 71 = "   
2.2 Conflict Reduction

3. IMPLEMENTATION


 
 
 

.K 6  


 
 

.K 6  

     #  

6LYZ[Z\]^_`\abca]ddec^ HQJ
  
 
V 
Yea^  
 KK       
$  










+$
)
T


K








"Q'(^dZc6Za ^_bc









8

 K   

    





 !
/ 
b`Yea^






A, ! +&#+$"' (/OceYea^   
  
(+?
!
+&# +$"' ( &%$$+(#  
    




K






 










   







K     











 


 !
 E     

 
  K   

K E    


  















K

KE    




       












K













 


K     
    

   L

 

 
 

    
 . 
 

/
    K  










   

  !
   

  ! 
  



 !   







 






K
















 

/ 
  
 



 


    

    

  


   

 K 
 
     



 

 




  



    
 
T
  

 
























  
  
 
  Yea^ 





  



TbaZ^^Zdbd^ K      baZ ^bd
K





T

9    O 














^
^_

8

Za
bc







dZc
    baZ
` Yea^  ce  Yea ^
^bd K  b
 
baZ ^bd 
 
  ^Zd ^  T 


K





   
      
 2
 !
 6     

  
Yea^  
  K^ dZc Za^_bc
!
 
K

b`Yea
^


baZ
bd



L
  

^T



ce Yea ^ 








Yea^ T 

ce



   

9




 
ce
Yea^ 
P

$
K 



 





  
   

    



`


2

a
bce
   K L ^Zd^T 
L   
3.1 Opening a Transactional Object


 
 
 

 
 
 

 
 



 

6  


 


 
 
 


 

 ! ""    #  #


 !!

.K 6  


 
 
 

6  

 




 

   #   #


 $ ""      

  b  ec 



 L
  % E      

  




       

   K    E 

      


   
       
K L^Zd ^T 
 



2 
9
Lb`Yea^T    b`Yea^
9 S 
  
   K 

 

 
   
L

  



^Zd^ 
    

 
         
Yea^ T  baZ^bd   
    b `


 









































   L ^Z^]



T 









!   L ^Z^]
T 

 
 ! 
!  !     
5     

















   








  
      
%$ 
    
   
 
  1 1 
H Q
J 
  






          


 


V
 

 
 
 
 ^bd



 
K


  & 7  


baZ



 

  
    &

7
  

1 1   


 
1&  1 
 
    7 
(++$  

   
 


 

8
   


    


 

  
 











2


















 


T     

       5
$     K  







2    
 




   

 
baZ
 
E
K   

^2





  


bd









,
A
!A
#




$+=
(
<
=
+

)

bec !  de` eZ e 
 

    
 







 

 

!
 
 E  K    




 

 
  
 






  




 






 
 

 de
   
  

 
` eZe 
 

  
   K

b
ec
1
 
C



           
     





   
   F
     
 8 
    

L


















Q 9
     















  
    





  

7   ^Z^]T dZcZa^_bcK



  !
   
 
  F
8
7 

    








 



T  
  !
   !    dZcZa^_bc
      U 
 





E   
K   F  


Q






8


b

ec     

 
F    













 






 






C
 






 8  b
  







ec  K     




   

  
   
   1


K







 




 
    
  /        

  
K  





 F K   















 






  C
K





  


 






















  
 


    












K 


U
     
     
   K 
K  
 
   
    
  


1 













 
  
    

    




    




   F    
  

3.2 Validating and Committing a Transaction

3.3 Costs

  
  
     
  K 
   









    8




K






 K  
   






















































K






U
          
 
.   
    .(
#
  






 


2



















2








.






























 


   
  












 













 

  
   
  
    

   
5F


E 
'
(-=(=

 



 +$  







#
#



&
(
+(


 E 
       
  


  



   




  

 
 

    5 

    





 












F




 










  

E






F0 

















   
     
  
    

 
 
 

   F
 

F 
 
    T   

















  T   












 
 F 8 



 

























1
 

 
   
    
 
   



E  


 
















 


F



  












      













  7 
  
 
   

  





    
 

   


 
F





   




(#


 













 
 





    























F






























             


T 


 bc ^ec^_ bc  ZcZed
 
T

 $  C








 
 
  


 (
#'
&=
#' (


T


















*++,! =&  



  


   

   T 




 





C
9









2












_^





^_
abC
 dZcZa bc ]aaee e
      
   

   


ab 

_^dZcZa^_bc Z_`e
   
 

     beceZ^^e^


3  4
    

       ( #     
 2

4. CONTENTION MANAGEMENT

 
  
  
K  


 

 




























_^

^^
^
/



b

ec d e e
     


K   C
  








9





 

. 
  

     
     b] `  




^
bd


   
   K  
C







`bd^
  


 b]





K











    
 



     2    



 E       

   






L






















 
5






  2





F
































bc^ec ^_ bc  ZcZ


    






ed     
2
 
  

 

  
 

T    
2









   



 2


  
   
_ 
 1  S    
 
de 

[e       
    

  












 5
   
b`_^
e 














T












 
 





  T


 
b]`  bd^ 
 K  
 






*=A"F
b] ` bd^  

 K   
+    






  
b]` bd ^  

   
 2











#




  
$
%+



 























 

  
    

5 
5




 
.  



F


   C  
 
 

     
 
  

WX

 
 2
 
  


9


QSE
 







QRSR D1$7
  





E








 2
























 

    








R Q



S






  
 

  M 9



  
  

R 


SS

























T    
   











  










2







E



2




2   










 

2



















  

       
 
  9 
2
 

  


 












 
    2

  





    2
    
Q 
4.1 Examples

5. RESULTS

  

2


 
 








S  2 










  .   
  









2

 
 
















  
























2





























  
T
 

  
      
  9 
   C    
  3 
 
6 
 4 
 O 
 T 


  


    










 
    

 

5
F

 


  


  





/










 


































   
    


  2

 

 

  
       
  

    
 F  
   
 








9 


    
    
 









 
2

   
      
 
      5 

 


































2
  
 

C
 
9 
Q  


  


     


 9 de_[e 
 
E  


   T 

  
 1 
  

 


  

 



























 

 

  E   b`_^ e 















  
 5
R 

  

 
















 



1  


 +       


 -=(=
     


  

= ',       








9

 1 9    
















      
de_[e   
  
   
    
5






  







F























 











 


   5 
 



  1
   




K







 
  
 
 
   





E  
2 
 

 F  2  

      






  2

 

  


 


 
 






9
















  








 








2

0   .
T 
C



  













 
 


















C



 J




















 





 1 
 






F


H

9
     T













 
    

  

operations/millisecond

50
45
40
35
30
25
20
15
10
5
0

Simple Locking
IntSetSimple/Aggressive
IntSetSimple/Polite
IntSetRelease/Aggressive
IntSetRelease/Polite
RBTree/Aggressive
RBTree/Polite

100

200

300

400

500

Number of threads (72-processor machine)

operations/millisecond

100

Simple Locking
IntSetSimple/Aggressive
IntSetSimple/Polite
IntSetRelease/Aggressive
IntSetRelease/Polite
RBTree/Aggressive
RBTree/Polite

80
60
40
20
0
10

20

30

40

50

60

70

Number of threads (72-processor machine)

# "!# #  # 


"  $     ! 
 #

  "  "   




       


 2    


 











 
 


 
2    
    5  

 
   
      
  e 
 

    

  

  

  
  b `_^
T  



 



T






  


    

 























  









 




 
 








T
    



 














 




  




    




9
K



































 

        K



    2

  9  




 


 
F

 











 


    
     C

.   




    







 
    



  









K   


    ! 
7



 






  

   3
 5K  




4











4













3





T    







  
   
     

   
  

 


C

   

6. CONCLUDING REMARKS


 

   

 

 



  

  92
































































         C 
 

V




.

















/














 


 

   
 
 

 
 





















































1




   



















 
  
  


   





  





4

 5  
T



         3







 










    
   D 





 2




















 










5











 
F 

 2

 




























  






















 
 
 
 E   


 



 





   
   
     




 





 
 
 


 
 






















 















1   

 C
 

 4 K
  


   3


 








 
 


     
 T   



  



  
   
 































5




  

E



 0 




 






 2
   
      
 /

5

 #
!   $6  
9 \]^_`
 
   C 6   
  YZ[Z
 
 Q\Sabca]ddec
  


^
2









&




V 
















  










 

V



C

2 











 
 
 

 













 





   

 6     
   




HQJ =>

=> +& '


&=^^#' (""Ya+%+"\bd#* $ (&%$$+(# #'A'#'+"
B'
!
A
!A
'
#
#
H
J >%(
&
$
"<"
+-"

=
$=
$
+
">&=
=
+


!A

'
'
#
><(&
$
(
G
=
(
+"+=$&
$
%
% '&=#' (" = +
 ""deeZda\]c\ab"aZ`Z`e"]






C
C
C





HOJ  ^^1

















*
,'



A

B
E

#
#

><- "'%-$ &++(@( +" $< *+- %#((%=

'
(
  SOMSP
IIS
Q

7. REFERENCES

HPJ &

 
 E
$&++
,'( "*# + '*#
1





((%=
A #%$+"B>< "'%- (=$=A +A A $'#-"=(,

'

Q
RQIIO
#
$&
+&




I



HSJ $


  
   & # =7
*

'
I
#
(
$-=
&
=
8
$Q QQ  

6

6
H J (#$7






7



$

$'#-" &  QIIR
6 A  
HJ .  ,%& # '( #
E $ &++ 8,'(C " *#+$,

F2


*
A
!
,
><"(#+$(=
;'
'
'
#
#
#
(=

(
+$+(&+
(
"
$
%
+

%#'(

RRO
#
  

8
HMJ 1  +-"     V













 ><  "' %-'(E

*
,'


A


'
#
#
#
#
$-&++ %#+$( "$&'#++&#%$+ 
(
+$(=
(=

MIORRQIIO

V
   

6
HIJ 




 K ,  B 8@$=("=&
1  #' ("


  
'
(Q O$8P $=-(
=( %= +"=( ><"#+-"

O
I


PQ6IIR$
 C K   


HQRJ 1
E

((%=


( "* # + 
A


,'



B
E($$


#
&++

>< "'%-
'
'
(
&
A+" *;'"#$'!%#+, - %#'(  
S

R
QIIP      
6 Q 
HQQJ Q Q

 '%-E($=$=&++,'A +(A "$&*#'#+&%$+"=(
+ # ,
B ><((%=
A


JHQ 


  

A  $'#  -" 
RRO    


  





*

A
A
A
,





 
%$(=

=$=
+
=(

QIIM
"#$'! %#+,
- %#'( 
 SQQ 8Q 



OHQJ ;'

(#+$(=#' (=A

*
,'



E


#
#





$
&++
(

"
+

II$" (;'"#$'!%#+,A $'#-" ORSOQI
Q  C    
HQPJ 


,
;'
'!
#
#
"
$
%
+

%#'(   



E

R
I
I

II
8C QQQ 
D  
HQSJV
6       
  Q8




)>  B;E)>$&++@"<,'( " *"#'%++-A+(+(#
B >



@
$'(&' A+" *,=#=!="+"<"#+-" 
Q


QII


Vous aimerez peut-être aussi