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;
}