linux学习的多线程

今天,我再次阅读Linux多线程的知识,看看代码是如何完成的。这是非常高的。请仔细看看代码的这些部分。



在百度百科中,线程的详细解释相当不错。我有几次需要时间。地址:百度——Linux多线程百科全书



*



*生产者消费问题的多线程互斥控制。源程序来自Linux网络编程。



* /



#包括



#包括



#包括



虚空(void * * producter_f Arg);



虚空(void * * consumer_f Arg);



国际buffer_has_item = 0; / * * /数量的缓存设置



pthread_mutex_t互斥; / * * /互斥集



运行= 1;



主(空)



{



pthread_t consumer_t; / * * /螺纹参数



pthread_t producter_t;



不知道为什么不给我一个蓝色的互斥初始化。



pthread_mutex_init(互斥,null);



创建一个线程



pthread_create(producter_t,null,(void *)producter_f,null);



pthread_create(consumer_t,null,(void *)consumer_f,null);



Usleep(1);



跑= 0;



*等待线程退出的线程不能超过一个线程等待。



pthread_join(consumer_t,null);



pthread_join(producter_t,null);



销毁/互斥体



pthread_mutex_destroy(互斥);



返回0;



}



虚空(void * * producter_f Arg)



{



(跑步)



{



pthread_mutex_lock(互斥); / * * /锁,进入专属区



buffer_has_item + +;



printf(产品,Num:% DN



pthread_mutex_unlock(互斥); / * * /左解锁互斥区



}



}



虚空(void * * consumer_f Arg)



{



(跑步)



{



pthread_mutex_lock(互斥);



buffer_has_item --;



printf(消费者人数为DN



pthread_mutex_unlock(互斥);



}



}



*



*生产者消费者问题的信号量控制可以与上述程序进行比较。



* /



#包括



#包括



#包括



虚空(void * * producter_f Arg);



虚空(void * * consumer_f Arg);



sem_t SEM;



运行= 1;



主(空)



{



pthread_t consumer_t;



pthread_t producter_t;



sem_init(SEM,0, 16); / * * /初始化信号



pthread_create(producter_t,null,(void *)producter_f,null);



pthread_create(consumer_t,null,(void *)consumer_f,null);



睡眠(1);



跑= 0;



pthread_join(consumer_t,null);



pthread_join(producter_t,null);



sem_destroy(SEM); / * * /破坏信号



返回0;



}