2012年3月21日星期三

Discount CoachSource:# include &lt ;stdio

Source:# include < ;stdio.h> ;include < string.h> ;# # ;include < ;pthread.h> ;include < errno.h> ;# # ;include < ;semaphore.h> ;define BUFSIZE define NUMBER # # 4 8 int sum_of_number = 0 ;sem_t write_res_number ;sem_t read_res_number ;struct recycle_buffer buffer { int ;int head ,tail re_buf ;} ;pthread_mutex_t buffer_mutex = PTHREAD_MUTEX_INITIALIZER ;void * prod ( void * ARG ) {int i ;for ( I = 0 ;i< ;= 8 ;I + + ) {sem_wait ( & ;write_res_number ) ;pthread_mutex_lock ( & ;buffer_mutex ) ;re_buf.
buffer = I ;re_buf.tail = ( re_buf.tail+1 ) %BUFSIZE ;printf ( " ;procuder %d write %d. / n" ;( int ) ,UGG Sale UK,pthread_self ( ) ,UGG Boots,I ) ;pthread_mutex_unlock ( & ;buffer_mutex ) ;sem_post ( & ;read_res_number ) ;} return NULL ;} void consumer ( void * ARG ) {int i ,Num ;for ( I = 0 ;i< ;= 8 ;I + + ) {sem_wait ( & ;read_res_number ) ;pthread_mutex_lock ( & ;buffer_mutex ) ;num = re_buf.
buffer ;re_buf.head = ( re_buf.head+1 ) %BUFSIZE printf ( " ;con ;Sumer %d read %d. / n" ;( int ) ,pthread_self ( ) ,Num ) ;pthread_mutex_unlock ( & ;buffer_mutex ) ;sum_of_number + = num ;sem_post ( & ;write_res_number ) ;} return NULL ;} int main ( ) {pthread_t PID CID ;int ,I ;re_buf.
head = 0 ;re_buf.tail = 0 ;for ( I = 0 ;i< ;BUFSIZE ;I + + ) re_buf.buffer = 0 ;sem_init ( & ;write_res_number ,0 ,Nike Shoes,BUFSIZE ) ;sem_init ( & ;read_res_number ,0, 0) ;pthread_create ( & ;PID ,NULL ,prod ,Discount Coach,NULL ) ;pthread_create ( & ;CID ,NULL ,consumer ,Monster Headphones,NULL ) ;pthread_join ( PID ,NULL ) ;pthread_join ( CID ,NULL ) ;printf ( " ;the sum of number is %d / n" ;,sum_of_number ) ;for ( I = 0 ;i< ;4 ;I + + ) printf ( " ;%d / n" ;re_buf.
buffer , ) ;return 0 ;} operation results :1 .Procuder 1210569840 write 0 procuder 1210569840 write 1 consumer 1218962544 read 0 procuder 1210569840 write 2 consumer 1218962544 read 1 consumer 1218962544 read 2 procuder 1210569840 write 3 procuder 1210569840 write 4 procuder 1210569840 write 5 procuder 1210569840 write 6 consumer 1218962544 read 3 consumer 1218962544 read 4 consumer 1218962544 read 5 consumer 1218962544 read 6 procuder 1210569840 write 7 procuder 1210569840 write 8 consumer 1218962544 read 7 consumer 1218962544 read 8 the sum of number is 3685672 .
Procuder 1209984112 write 0 procuder 1209984112 write 1 procuder 1209984112 write 2 procuder 1209984112 write 3 consumer 1218376816 read 0 consumer 1218376816 read 1 consumer 1218376816
read 2 consumer 1218376816 read 3 procuder 1209984112 write 4 procuder 1209984112 write 5 procuder 1209984112 write 6 procuder 1209984112 write 7 consumer 1218376816 read 4 consumer 1218376816
Related articles:

没有评论:

发表评论