626  
  

.

 

      .  -
,         -
   .      -
    ,   
   , :

static int random_is_initialized = 0;

extern int initialize_random () ;

int random_function ()
{

if (random_is_initialized == 0) {
initialize_random ();

random_is_initialized = 1;

}

... /* ,   . */
}

       ,  -
  .       
        -
       .

       -
  ;       -
    ,    .
    ,     -
   .   ,   -
  ,     .

  pthread_once ()    -
    ,    -
     . -
       .

#include <pthread.h>

static pthread_once_t random_is_initialized =

PTHREAD_ONCE_INIT ;

extern int initialize_random();

int random_function()
{

(void) pthread_once (&random_is_initialized,
initialize_random) ;

... /* ,   . */
}

   ,   pthread_once_t    , -
     &<array_name> .