        . ,
 atomic_read ()    ,   -
    atomic_t.

 9.1.        

   

ATOMIC_INIT (int i)                           i
  atomic_t

int atomic_read(atomic_t *v)               -

  v
void, atomic_set (atomic_t *v, int i)        v   i
void atomic_add (int i, atomic_t *v)        i   v
void atomic_sub (int i, atomic_t *v)        i   v
void atomic_inc (atomic_t *v)                 v
void atomic_dec (atomic_t *v)                 v

int atomic_sub_and_test(int i, atomic_t *v)    i   v
  true,    ,
 false   

int atomic_add_negative(int i, atomic_t *v)    i  
v   true,   
 ,   false

int atomic_dec_and_test (atomic_t *v)         v
  true,   
 ,   false

int atomic inc and test (atomic t *v)        v

   

           -
.   ,       -
 .          
.  ,         -
 :   ,    ,   ,
   ,     ,     -
. ,       42,    365, 
     42  365,     . 
 .

  ,      ,   
     .    ,
   {ordering}.  ,    
      ,    .  -
  ,     ,     
   ,     .

 ,     ,   .
       (barrier),  
    .

180  9