From: Forward (void * arg); void * c
From:
Http://www.linuxidc.com/Linux/2011-08/41792.htm
# Include
# Include
# Include
Void * producter_f (void * arg );
Void * consumer_f (void * arg );
Int buffer_has_item = 0;
Sem_t sem;
Int running = 1;
Int main (void)
{
Pthread_t consumer_t;
Pthread_t producter_t;
Sem_init (& sem, 0, 16 );
Pthread_create (& producter_t, 0, (void *) producter_f, 0 );
Pthread_create (& consumer_t, 0, (void *) consumer_f, 0 );
Sleep (1 );
Running = 0;
Pthread_join (consumer_t, 0 );
Pthread_join (producter_t, 0 );
Sem_destroy (& sem );
Return 0;
}
Void * producter_f (void * arg)
{
Int semval = 0;
While (running)
{
Usleep (0 );
Sem_post (& sem );
Sem_getvalue (& sem, & semval );
Printf ("production, total quantity: % d \ n", semval );
}
}
Void * consumer_f (void * arg)
{
Int semval = 0;
While (running)
{
Usleep (1 );
Sem_wait (& sem );
Sem_getvalue (& sem, & semval );
Printf ("consumption, total quantity: % d \ n", semval );
}
}
Author: Zhang Libin"