第一范文网 - 专业文章范例文档资料分享平台

多线程程序设计 for Linux

来源:用户分享 时间:2025/5/29 2:42:16 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

#include #include #include #include #include #include #include #defineFIFO\#defineN5 intlock_var;time_tend_time; charbuf_r[100];

sem_tmutex,full,avail;/*定义3个信号量,full标识缓冲区是否为满,avail标识缓冲区 是否为空.*/

intfd;

voidpthread1(void*arg); voidpthread2(void*arg); voidconsumer(void*arg); voidproductor(void*arg); intmain(intargc,char*argv[])

{

pthread_tid1,id2;

pthread_tmon_th_id; intret;

end_time=time(NULL)+30;

if((mkfifo(FIFO,O_CREAT|O_EXCL)<0)&&(errno!=EEXIST)) printf(\cannotcreatefifoserver\\n\); printf(\reparingfor readingbytes...\\n\); memset(buf_r,0,sizeof(buf_r)); fd=open(FIFO,O_RDWR|O_NONBLOCK,0); if(fd==-1) {

perror(\open\); exit(1); } ret=sem_init(&mutex,0,1); ret=sem_init(&avail,0,N); ret=sem_init(&full,0,0); if(ret!=0) {

perror(\sem_init\); }

ret=pthread_create(&id1,NULL,(void*)productor,NULL); if(ret!=0)

perror(\ret=pthread_create(&id2,NULL,(void*)consumer,NULL); if(ret!=0)

perror(\pthread_join(id1,NULL); pthread_join(id2,NULL); exit(0);

}

voidproductor(void*arg) {

inti,nwrite;

while(time(NULL)

if(errno==EAGAIN)

printf(\FIFOhasnotbeenreadyet.Pleasetrylater\\n\);

} else

printf(\FIFO\\n\); sem_post(&full);

sem_post(&mutex); sleep(1);

} }

voidconsumer(void*arg) {

intnolock=0; intret,nread;

while(time(NULL)

if(errno==EAGAIN) printf(\et\\n\);

}

printf(\read%sfromFIFO\\n\,buf_r); sem_post(&avail); sem_post(&mutex); sleep(1);

}

}

搜索更多关于: 多线程程序设计 for Linux 的文档
多线程程序设计 for Linux.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5ubv85lfr605ej21u7vo_9.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top