CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/thr_lock.h
浏览该文件的文档。
00001 / *   C o p y r i g h t   2 0 0 0 - 2 0 0 8   M y S Q L   A B ,   2 0 0 8   S u n   M i c r o s y s t e m s ,   I n c . 
00002  
00003        T h i s   p r o g r a m   i s   f r e e   s o f t w a r e ;   y o u   c a n   r e d i s t r i b u t e   i t   a n d / o r   m o d i f y 
00004  
00005        i t   u n d e r   t h e   t e r m s   o f   t h e   G N U   G e n e r a l   P u b l i c   L i c e n s e   a s   p u b l i s h e d   b y 
00006  
00007        t h e   F r e e   S o f t w a r e   F o u n d a t i o n ;   v e r s i o n   2   o f   t h e   L i c e n s e . 
00008  
00009        T h i s   p r o g r a m   i s   d i s t r i b u t e d   i n   t h e   h o p e   t h a t   i t   w i l l   b e   u s e f u l , 
00010  
00011        b u t   W I T H O U T   A N Y   W A R R A N T Y ;   w i t h o u t   e v e n   t h e   i m p l i e d   w a r r a n t y   o f 
00012  
00013        M E R C H A N T A B I L I T Y   o r   F I T N E S S   F O R   A   P A R T I C U L A R   P U R P O S E .     S e e   t h e 
00014  
00015        G N U   G e n e r a l   P u b l i c   L i c e n s e   f o r   m o r e   d e t a i l s . 
00016  
00017        Y o u   s h o u l d   h a v e   r e c e i v e d   a   c o p y   o f   t h e   G N U   G e n e r a l   P u b l i c   L i c e n s e 
00018  
00019        a l o n g   w i t h   t h i s   p r o g r a m ;   i f   n o t ,   w r i t e   t o   t h e   F r e e   S o f t w a r e 
00020  
00021        F o u n d a t i o n ,   I n c . ,   5 9   T e m p l e   P l a c e ,   S u i t e   3 3 0 ,   B o s t o n ,   M A     0 2 1 1 1 - 1 3 0 7     U S A   * / 
00022  
00023  / *   F o r   u s e   w i t h   t h r _ l o c k : s   * / 
00024  
00025  # i f n d e f   _ t h r _ l o c k _ h 
00026  
00027  # d e f i n e   _ t h r _ l o c k _ h 
00028  
00029  # i f d e f     _ _ c p l u s p l u s 
00030  
00031  e x t e r n   " C "   { 
00032  
00033  # e n d i f 
00034  
00035  # i n c l u d e   < m y _ p t h r e a d . h > 
00036  
00037  # i n c l u d e   < m y _ l i s t . h > 
00038  
00039  s t r u c t   s t _ t h r _ l o c k ; 
00040  
00041  e x t e r n   u l o n g   l o c k s _ i m m e d i a t e , l o c k s _ w a i t e d   ; 
00042  
00043  / * * 
00044  
00045      L o c k   t y p e s   a r e   u s e d   t o   r e q u e s t   a   l o c k   o n   a   t a b l e .   C h a n g e s   i n   t h i s   e n u m e r a t i o n 
00046  
00047      m i g h t   a f f e c t   t r a n s a c t i o n a l   l o c k s   a s   w e l l . 
00048  
00049      I m p o r t a n t :   i f   a   n e w   l o c k   t y p e   i s   a d d e d ,   a   m a t c h i n g   l o c k   d e s c r i p t i o n 
00050  
00051                          m u s t   b e   a d d e d   t o   s q l _ t e s t . c c ' s   l o c k _ d e s c r i p t i o n s   a r r a y . 
00052  
00053      @ s e e   s e t _ h a n d l e r _ t a b l e _ l o c k s 
00054  
00055      @ s e e   r e a d _ l o c k _ t y p e _ f o r _ t a b l e 
00056  
00057  * / 
00058  
00059  e n u m   t h r _ l o c k _ t y p e   {   T L _ I G N O R E = - 1 , 
00060  
00061                    T L _ U N L O C K ,           / *   U N L O C K   A N Y   L O C K   * / 
00062  
00063                                            / * 
00064  
00065                                                P a r s e r   o n l y !   A t   o p e n _ t a b l e s ( )   b e c o m e s   T L _ R E A D   o r 
00066  
00067                                                T L _ R E A D _ N O _ I N S E R T   d e p e n d i n g   o n   t h e   b i n a r y   l o g   f o r m a t 
00068  
00069                                                ( S B R / R B R )   a n d   o n   t h e   t a b l e   c a t e g o r y   ( l o g   t a b l e ) . 
00070  
00071                                                U s e d   f o r   t a b l e s   t h a t   a r e   r e a d   b y   s t a t e m e n t s   w h i c h 
00072  
00073                                                m o d i f y   t a b l e s . 
00074  
00075                                            * / 
00076  
00077                                            T L _ R E A D _ D E F A U L T , 
00078  
00079                    T L _ R E A D ,           / *   R e a d   l o c k   * / 
00080  
00081                    T L _ R E A D _ W I T H _ S H A R E D _ L O C K S , 
00082  
00083                    / *   H i g h   p r i o r .   t h a n   T L _ W R I T E .   A l l o w   c o n c u r r e n t   i n s e r t   * / 
00084  
00085                    T L _ R E A D _ H I G H _ P R I O R I T Y , 
00086  
00087                    / *   R E A D ,   D o n ' t   a l l o w   c o n c u r r e n t   i n s e r t   * / 
00088  
00089                    T L _ R E A D _ N O _ I N S E R T , 
00090  
00091                    / *   
00092  
00093              W r i t e   l o c k ,   b u t   a l l o w   o t h e r   t h r e a d s   t o   r e a d   /   w r i t e . 
00094  
00095              U s e d   b y   B D B   t a b l e s   i n   M y S Q L   t o   m a r k   t h a t   s o m e o n e   i s 
00096  
00097              r e a d i n g / w r i t i n g   t o   t h e   t a b l e . 
00098  
00099                      * / 
00100  
00101                    T L _ W R I T E _ A L L O W _ W R I T E , 
00102  
00103                    / * 
00104  
00105              W r i t e   l o c k ,   b u t   a l l o w   o t h e r   t h r e a d s   t o   r e a d . 
00106  
00107              U s e d   b y   A L T E R   T A B L E   i n   M y S Q L   t o   a l l o w   r e a d e r s 
00108  
00109              t o   u s e   t h e   t a b l e   u n t i l   A L T E R   T A B L E   i s   f i n i s h e d . 
00110  
00111                    * / 
00112  
00113                    T L _ W R I T E _ A L L O W _ R E A D , 
00114  
00115                    / * 
00116  
00117                        W R I T E   l o c k   u s e d   b y   c o n c u r r e n t   i n s e r t .   W i l l   a l l o w 
00118  
00119                        R E A D ,   i f   o n e   c o u l d   u s e   c o n c u r r e n t   i n s e r t   o n   t a b l e . 
00120  
00121                    * / 
00122  
00123                    T L _ W R I T E _ C O N C U R R E N T _ I N S E R T , 
00124  
00125                    / *   W r i t e   u s e d   b y   I N S E R T   D E L A Y E D .     A l l o w s   R E A D   l o c k s   * / 
00126  
00127                    T L _ W R I T E _ D E L A Y E D , 
00128  
00129                                            / *   
00130  
00131                                                p a r s e r   o n l y !   L a t e   b o u n d   l o w _ p r i o r i t y   f l a g .   
00132  
00133                                                A t   o p e n _ t a b l e s ( )   b e c o m e s   t h d - > u p d a t e _ l o c k _ d e f a u l t . 
00134  
00135                                            * / 
00136  
00137                                            T L _ W R I T E _ D E F A U L T , 
00138  
00139                    / *   W R I T E   l o c k   t h a t   h a s   l o w e r   p r i o r i t y   t h a n   T L _ R E A D   * / 
00140  
00141                    T L _ W R I T E _ L O W _ P R I O R I T Y , 
00142  
00143                    / *   N o r m a l   W R I T E   l o c k   * / 
00144  
00145                    T L _ W R I T E , 
00146  
00147                    / *   A b o r t   n e w   l o c k   r e q u e s t   w i t h   a n   e r r o r   * / 
00148  
00149                    T L _ W R I T E _ O N L Y } ; 
00150  
00151  e n u m   e n u m _ t h r _ l o c k _ r e s u l t   {   T H R _ L O C K _ S U C C E S S =   0 ,   T H R _ L O C K _ A B O R T E D =   1 , 
00152  
00153                                                          T H R _ L O C K _ W A I T _ T I M E O U T =   2 ,   T H R _ L O C K _ D E A D L O C K =   3   } ; 
00154  
00155  
00156  
00157  e x t e r n   u l o n g   m a x _ w r i t e _ l o c k _ c o u n t ; 
00158  
00159  e x t e r n   u l o n g   t a b l e _ l o c k _ w a i t _ t i m e o u t ; 
00160  
00161  e x t e r n   m y _ b o o l   t h r _ l o c k _ i n i t e d ; 
00162  
00163  e x t e r n   e n u m   t h r _ l o c k _ t y p e   t h r _ u p g r a d e d _ c o n c u r r e n t _ i n s e r t _ l o c k ; 
00164  
00165  / * 
00166  
00167      A   d e s c r i p t i o n   o f   t h e   t h r e a d   w h i c h   o w n s   t h e   l o c k .   T h e   a d d r e s s 
00168  
00169      o f   a n   i n s t a n c e   o f   t h i s   s t r u c t u r e   i s   u s e d   t o   u n i q u e l y   i d e n t i f y   t h e   t h r e a d . 
00170  
00171  * / 
00172  
00173  t y p e d e f   s t r u c t   s t _ t h r _ l o c k _ i n f o 
00174  
00175  { 
00176  
00177      p t h r e a d _ t   t h r e a d ; 
00178  
00179      m y _ t h r e a d _ i d   t h r e a d _ i d ; 
00180  
00181      u l o n g   n _ c u r s o r s ; 
00182  
00183  }   T H R _ L O C K _ I N F O ; 
00184  
00185  / * 
00186  
00187      L o c k   o w n e r   i d e n t i f i e r .   G l o b a l l y   i d e n t i f i e s   t h e   l o c k   o w n e r   w i t h i n   t h e 
00188  
00189      t h r e a d   a n d   a m o n g   a l l   t h e   t h r e a d s .   T h e   a d d r e s s   o f   a n   i n s t a n c e   o f   t h i s 
00190  
00191      s t r u c t u r e   i s   u s e d   a s   i d . 
00192  
00193  * / 
00194  
00195  t y p e d e f   s t r u c t   s t _ t h r _ l o c k _ o w n e r 
00196  
00197  { 
00198  
00199      T H R _ L O C K _ I N F O   * i n f o ; 
00200  
00201  }   T H R _ L O C K _ O W N E R ; 
00202  
00203  
00204  
00205  t y p e d e f   s t r u c t   s t _ t h r _ l o c k _ d a t a   { 
00206  
00207      T H R _ L O C K _ O W N E R   * o w n e r ; 
00208  
00209      s t r u c t   s t _ t h r _ l o c k _ d a t a   * n e x t , * * p r e v ; 
00210  
00211      s t r u c t   s t _ t h r _ l o c k   * l o c k ; 
00212  
00213      p t h r e a d _ c o n d _ t   * c o n d ; 
00214  
00215      e n u m   t h r _ l o c k _ t y p e   t y p e ; 
00216  
00217      v o i d   * s t a t u s _ p a r a m ;           / *   P a r a m   t o   s t a t u s   f u n c t i o n s   * / 
00218  
00219      v o i d   * d e b u g _ p r i n t _ p a r a m ; 
00220  
00221  }   T H R _ L O C K _ D A T A ; 
00222  
00223  s t r u c t   s t _ l o c k _ l i s t   { 
00224  
00225      T H R _ L O C K _ D A T A   * d a t a , * * l a s t ; 
00226  
00227  } ; 
00228  
00229  t y p e d e f   s t r u c t   s t _ t h r _ l o c k   { 
00230  
00231      L I S T   l i s t ; 
00232  
00233      p t h r e a d _ m u t e x _ t   m u t e x ; 
00234  
00235      s t r u c t   s t _ l o c k _ l i s t   r e a d _ w a i t ; 
00236  
00237      s t r u c t   s t _ l o c k _ l i s t   r e a d ; 
00238  
00239      s t r u c t   s t _ l o c k _ l i s t   w r i t e _ w a i t ; 
00240  
00241      s t r u c t   s t _ l o c k _ l i s t   w r i t e ; 
00242  
00243      / *   w r i t e _ l o c k _ c o u n t   i s   i n c r e m e n t e d   f o r   w r i t e   l o c k s   a n d   r e s e t   o n   r e a d   l o c k s   * / 
00244  
00245      u l o n g   w r i t e _ l o c k _ c o u n t ; 
00246  
00247      u i n t   r e a d _ n o _ w r i t e _ c o u n t ; 
00248  
00249      v o i d   ( * g e t _ s t a t u s ) ( v o i d * ,   m y _ b o o l ) ;   / *   W h e n   o n e   g e t s   a   l o c k   * / 
00250  
00251      v o i d   ( * c o p y _ s t a t u s ) ( v o i d * , v o i d * ) ; 
00252  
00253      v o i d   ( * u p d a t e _ s t a t u s ) ( v o i d * ) ;       / *   B e f o r e   r e l e a s e   o f   w r i t e   * / 
00254  
00255      v o i d   ( * r e s t o r e _ s t a t u s ) ( v o i d * ) ;                   / *   B e f o r e   r e l e a s e   o f   r e a d   * / 
00256  
00257      m y _ b o o l   ( * c h e c k _ s t a t u s ) ( v o i d   * ) ; 
00258  
00259      m y _ b o o l   a l l o w _ m u l t i p l e _ c o n c u r r e n t _ i n s e r t ; 
00260  
00261  }   T H R _ L O C K ; 
00262  
00263  
00264  
00265  e x t e r n   L I S T   * t h r _ l o c k _ t h r e a d _ l i s t ; 
00266  
00267  e x t e r n   p t h r e a d _ m u t e x _ t   T H R _ L O C K _ l o c k ; 
00268  
00269  m y _ b o o l   i n i t _ t h r _ l o c k ( v o i d ) ;         / *   M u s t   b e   c a l l e d   o n c e / t h r e a d   * / 
00270  
00271  # d e f i n e   t h r _ l o c k _ o w n e r _ i n i t ( o w n e r ,   i n f o _ a r g )   ( o w n e r ) - > i n f o =   ( i n f o _ a r g ) 
00272  
00273  v o i d   t h r _ l o c k _ i n f o _ i n i t ( T H R _ L O C K _ I N F O   * i n f o ) ; 
00274  
00275  v o i d   t h r _ l o c k _ i n i t ( T H R _ L O C K   * l o c k ) ; 
00276  
00277  v o i d   t h r _ l o c k _ d e l e t e ( T H R _ L O C K   * l o c k ) ; 
00278  
00279  v o i d   t h r _ l o c k _ d a t a _ i n i t ( T H R _ L O C K   * l o c k , T H R _ L O C K _ D A T A   * d a t a , 
00280  
00281              v o i d   * s t a t u s _ p a r a m ) ; 
00282  
00283  e n u m   e n u m _ t h r _ l o c k _ r e s u l t   t h r _ l o c k ( T H R _ L O C K _ D A T A   * d a t a , 
00284  
00285                                                                        T H R _ L O C K _ O W N E R   * o w n e r , 
00286  
00287                                                                        e n u m   t h r _ l o c k _ t y p e   l o c k _ t y p e ) ; 
00288  
00289  v o i d   t h r _ u n l o c k ( T H R _ L O C K _ D A T A   * d a t a ) ; 
00290  
00291  e n u m   e n u m _ t h r _ l o c k _ r e s u l t   t h r _ m u l t i _ l o c k ( T H R _ L O C K _ D A T A   * * d a t a , 
00292  
00293                                                                                    u i n t   c o u n t ,   T H R _ L O C K _ O W N E R   * o w n e r ) ; 
00294  
00295  v o i d   t h r _ m u l t i _ u n l o c k ( T H R _ L O C K _ D A T A   * * d a t a , u i n t   c o u n t ) ; 
00296  
00297  v o i d 
00298  
00299  t h r _ l o c k _ m e r g e _ s t a t u s ( T H R _ L O C K _ D A T A   * * d a t a ,   u i n t   c o u n t ) ; 
00300  
00301  v o i d   t h r _ a b o r t _ l o c k s ( T H R _ L O C K   * l o c k ,   m y _ b o o l   u p g r a d e _ l o c k ) ; 
00302  
00303  m y _ b o o l   t h r _ a b o r t _ l o c k s _ f o r _ t h r e a d ( T H R _ L O C K   * l o c k ,   m y _ t h r e a d _ i d   t h r e a d ) ; 
00304  
00305  v o i d   t h r _ p r i n t _ l o c k s ( v o i d ) ;       / *   F o r   d e b u g g i n g   * / 
00306  
00307  m y _ b o o l   t h r _ u p g r a d e _ w r i t e _ d e l a y _ l o c k ( T H R _ L O C K _ D A T A   * d a t a , 
00308  
00309                                                                            e n u m   t h r _ l o c k _ t y p e   n e w _ l o c k _ t y p e ) ; 
00310  
00311  v o i d         t h r _ d o w n g r a d e _ w r i t e _ l o c k ( T H R _ L O C K _ D A T A   * d a t a , 
00312  
00313                                                                    e n u m   t h r _ l o c k _ t y p e   n e w _ l o c k _ t y p e ) ; 
00314  
00315  m y _ b o o l   t h r _ r e s c h e d u l e _ w r i t e _ l o c k ( T H R _ L O C K _ D A T A   * d a t a ) ; 
00316  
00317  # i f d e f     _ _ c p l u s p l u s 
00318  
00319  } 
00320  
00321  # e n d i f 
00322  
00323  # e n d i f   / *   _ t h r _ l o c k _ h   * / 
00324  
00325  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义