CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/waiting_threads.h
浏览该文件的文档。
00001 / *   C o p y r i g h t   ( C )   2 0 0 8   M y S Q L   A B ,   2 0 0 8 - 2 0 0 9   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  # i f n d e f   _ w a i t i n g _ t h r e a d s _ h 
00024  
00025  # d e f i n e   _ w a i t i n g _ t h r e a d s _ h 
00026  
00027  # i n c l u d e   < m y _ g l o b a l . h > 
00028  
00029  # i n c l u d e   < m y _ s y s . h > 
00030  
00031  # i n c l u d e   < l f . h > 
00032  
00033  C _ M O D E _ S T A R T 
00034  
00035  t y p e d e f   s t r u c t   s t _ w t _ r e s o u r c e _ i d   W T _ R E S O U R C E _ I D ; 
00036  
00037  t y p e d e f   s t r u c t   s t _ w t _ r e s o u r c e   W T _ R E S O U R C E ; 
00038  
00039  t y p e d e f   s t r u c t   s t _ w t _ r e s o u r c e _ t y p e   { 
00040  
00041      m y _ b o o l   ( * c o m p a r e ) ( c o n s t   v o i d   * a ,   c o n s t   v o i d   * b ) ; 
00042  
00043      c o n s t   v o i d   * ( * m a k e _ k e y ) ( c o n s t   W T _ R E S O U R C E _ I D   * i d ,   u i n t   * l e n ) ;   / *   n o t   u s e d   * / 
00044  
00045  }   W T _ R E S O U R C E _ T Y P E ; 
00046  
00047  s t r u c t   s t _ w t _ r e s o u r c e _ i d   { 
00048  
00049      u l o n g l o n g   v a l u e ; 
00050  
00051      c o n s t   W T _ R E S O U R C E _ T Y P E   * t y p e ; 
00052  
00053  } ; 
00054  
00055  / *   t h e   b e l o w   d i f f e r s   f r o m   s i z e o f ( W T _ R E S O U R C E _ I D )   b y   t h e   a m o u n t   o f   p a d d i n g   * / 
00056  
00057  # d e f i n e   s i z e o f _ W T _ R E S O U R C E _ I D   ( s i z e o f ( u l o n g l o n g ) + s i z e o f ( v o i d * ) ) 
00058  
00059  # d e f i n e   W T _ W A I T _ S T A T S     2 4 
00060  
00061  # d e f i n e   W T _ C Y C L E _ S T A T S   3 2 
00062  
00063  e x t e r n   u l o n g l o n g   w t _ w a i t _ t a b l e [ W T _ W A I T _ S T A T S ] ; 
00064  
00065  e x t e r n   u i n t 3 2         w t _ w a i t _ s t a t s [ W T _ W A I T _ S T A T S + 1 ] ; 
00066  
00067  e x t e r n   u i n t 3 2         w t _ c y c l e _ s t a t s [ 2 ] [ W T _ C Y C L E _ S T A T S + 1 ] ; 
00068  
00069  e x t e r n   u i n t 3 2         w t _ s u c c e s s _ s t a t s ; 
00070  
00071  t y p e d e f   s t r u c t   s t _ w t _ t h d   { 
00072  
00073      / * 
00074  
00075          X X X 
00076  
00077          t h e r e ' s   n o   p r o t e c t i o n   ( m u t e x )   a g a i n s t   c o n c u r r e n t   a c c e s s   o f   t h e 
00078  
00079          d y n a r r a y   b e l o w .   i t   i s   a s s u m e d   t h a t   a   c a l l e r   w i l l   h a v e   i t   a n y w a y 
00080  
00081          ( n o t   t o   p r o t e c t   t h i s   a r r a y   b u t   t o   p r o t e c t   i t s   o w n   -   c a l l e r ' s   - 
00082  
00083          d a t a   s t r u c t u r e s ) ,   a n d   w e ' l l   g e t   i t   f o r   f r e e .   A   c a l l e r   n e e d s   t o 
00084  
00085          e n s u r e   t h a t   a   b l o c k e r   w o n ' t   r e l e a s e   a   r e s o u r c e   b e f o r e   a   b l o c k e d 
00086  
00087          t h r e a d   s t a r t s   w a i t i n g ,   w h i c h   i s   u s u a l l y   d o n e   w i t h   a   m u t e x . 
00088  
00089          
00090  
00091          I f   t h e   a b o v e   a s s u m p t i o n   i s   w r o n g ,   w e ' l l   n e e d   t o   a d d   a   m u t e x   h e r e . 
00092  
00093      * / 
00094  
00095      D Y N A M I C _ A R R A Y       m y _ r e s o u r c e s ; 
00096  
00097      / * 
00098  
00099          ' w a i t i n g _ f o r '   i s   m o d i f i e d   u n d e r   w a i t i n g _ f o r - > l o c k ,   a n d   o n l y   b y   t h d   i t s e l f 
00100  
00101          ' w a i t i n g _ f o r '   i s   r e a d   l o c k - f r e e   ( u s i n g   p i n n i n g   p r o t o c o l ) ,   b u t   a   t h d   o b j e c t 
00102  
00103          c a n   r e a d   i t s   o w n   ' w a i t i n g _ f o r '   w i t h o u t   a n y   l o c k s   o r   t r i c k s . 
00104  
00105      * / 
00106  
00107      W T _ R E S O U R C E         * w a i t i n g _ f o r ; 
00108  
00109      L F _ P I N S                 * p i n s ; 
00110  
00111      / *   p o i n t e r s   t o   v a l u e s   * / 
00112  
00113      c o n s t   u l o n g   * t i m e o u t _ s h o r t ; 
00114  
00115      c o n s t   u l o n g   * d e a d l o c k _ s e a r c h _ d e p t h _ s h o r t ; 
00116  
00117      c o n s t   u l o n g   * t i m e o u t _ l o n g ; 
00118  
00119      c o n s t   u l o n g   * d e a d l o c k _ s e a r c h _ d e p t h _ l o n g ; 
00120  
00121      / * 
00122  
00123          w e i g h t   r e l a t e s   t o   t h e   d e s i r a b i l i t y   o f   a   t r a n s a c t i o n   b e i n g   k i l l e d   i f   i t ' s 
00124  
00125          p a r t   o f   a   d e a d l o c k .   I n   a   d e a d l o c k   s i t u a t i o n   t r a n s a c t i o n s   w i t h   l o w e r   w e i g h t s 
00126  
00127          a r e   k i l l e d   f i r s t . 
00128  
00129          E x a m p l e s   o f   u s i n g   t h e   w e i g h t   t o   i m p l e m e n t   d i f f e r e n t   s e l e c t i o n   s t r a t e g i e s : 
00130  
00131          1 .   L a t e s t 
00132  
00133                  K e e p   a l l   w e i g h t s   e q u a l . 
00134  
00135          2 .   R a n d o m 
00136  
00137                  A s s i g h t   w e i g h t s   a t   r a n d o m . 
00138  
00139                  ( v a r i a n t :   m o d i f y   a   w e i g h t   r a n d o m l y   b e f o r e   e v e r y   l o c k   r e q u e s t ) 
00140  
00141          3 .   Y o u n g e s t 
00142  
00143                  S e t   w e i g h t   t o   - N O W ( ) 
00144  
00145          4 .   M i n i m u m   l o c k s 
00146  
00147                  c o u n t   l o c k s   g r a n t e d   i n   y o u r   l o c k   m a n a g e r ,   s t o r e   t h e   v a l u e   a s   a   w e i g h t 
00148  
00149          5 .   M i n i m u m   w o r k 
00150  
00151                  d e p e n d s   o n   t h e   d e f i n i t i o n   o f   " w o r k " .   F o r   e x a m p l e ,   s t o r e   t h e   n u m b e r 
00152  
00153                  o f   r o w s   m o d i f i e s   i n   t h i s   t r a n s a c t i o n   ( o r   a   l e n g t h   o f   R E D O   l o g   f o r   a 
00154  
00155                  t r a n s a c t i o n )   a s   a   w e i g h t . 
00156  
00157          I t   i s   o n l y   s t a t i s t i c a l l y   r e l e v a n t   a n d   i s   n o t   p r o t e c t e d   b y   a n y   l o c k s . 
00158  
00159      * / 
00160  
00161      u l o n g   v o l a t i l e   w e i g h t ; 
00162  
00163      / * 
00164  
00165          ' k i l l e d '   i s   i n d i r e c t l y   p r o t e c t e d   b y   w a i t i n g _ f o r - > l o c k   b e c a u s e 
00166  
00167          a   k i l l e d   t h r e a d   n e e d s   t o   c l e a r   i t s   ' w a i t i n g _ f o r '   a n d   t h u s   n e e d s   a   l o c k . 
00168  
00169          T h a t   i s   a   t h r e a d   n e e d s   a n   e x c l u s i v e   l o c k   t o   r e a d   ' k i l l e d '   r e l i a b l y . 
00170  
00171          B u t   o t h e r   t h r e a d s   m a y   c h a n g e   ' k i l l e d '   f r o m   0   t o   1 ,   a   s h a r e d 
00172  
00173          l o c k   i s   e n o u g h   f o r   t h a t . 
00174  
00175        * / 
00176  
00177      m y _ b o o l   k i l l e d ; 
00178  
00179  # i f n d e f   D B U G _ O F F 
00180  
00181      c o n s t   c h a r           * n a m e ; 
00182  
00183  # e n d i f 
00184  
00185  }   W T _ T H D ; 
00186  
00187  # d e f i n e   W T _ T I M E O U T                             E T I M E D O U T 
00188  
00189  # d e f i n e   W T _ O K                                       0 
00190  
00191  # d e f i n e   W T _ D E A D L O C K                           - 1 
00192  
00193  # d e f i n e   W T _ D E P T H _ E X C E E D E D               - 2 
00194  
00195  # d e f i n e   W T _ F R E E _ T O _ G O                       - 3 
00196  
00197  v o i d   w t _ i n i t ( v o i d ) ; 
00198  
00199  v o i d   w t _ e n d ( v o i d ) ; 
00200  
00201  v o i d   w t _ t h d _ l a z y _ i n i t ( W T _ T H D   * ,   c o n s t   u l o n g   * ,   c o n s t   u l o n g   * ,   c o n s t   u l o n g   * ,   c o n s t   u l o n g   * ) ; 
00202  
00203  v o i d   w t _ t h d _ d e s t r o y ( W T _ T H D   * ) ; 
00204  
00205  i n t   w t _ t h d _ w i l l _ w a i t _ f o r ( W T _ T H D   * ,   W T _ T H D   * ,   c o n s t   W T _ R E S O U R C E _ I D   * ) ; 
00206  
00207  i n t   w t _ t h d _ c o n d _ t i m e d w a i t ( W T _ T H D   * ,   p t h r e a d _ m u t e x _ t   * ) ; 
00208  
00209  v o i d   w t _ t h d _ r e l e a s e ( W T _ T H D   * ,   c o n s t   W T _ R E S O U R C E _ I D   * ) ; 
00210  
00211  # d e f i n e   w t _ t h d _ r e l e a s e _ a l l ( T H D )   w t _ t h d _ r e l e a s e ( ( T H D ) ,   0 ) 
00212  
00213  m y _ b o o l   w t _ r e s o u r c e _ i d _ m e m c m p ( c o n s t   v o i d   * ,   c o n s t   v o i d   * ) ; 
00214  
00215  C _ M O D E _ E N D 
00216  
00217  # e n d i f 
00218  
00219  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义