linux信号量机制

linux信号量机制

ID:37860444

大小:47.00 KB

页数:6页

时间:2019-06-01

linux信号量机制_第1页
linux信号量机制_第2页
linux信号量机制_第3页
linux信号量机制_第4页
linux信号量机制_第5页
资源描述:

《linux信号量机制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux信号量机制1需求说明l提供与用户交互的界面,用户可指定输入、输出文件以及缓冲区大小l利用信号量实现互斥l同时产生多个get、copy和put线程,利用信号量实现多个相同功能的线程间的通信,避免临界资源的非法访问l支持文件输入、输出2设计说明缓冲区S缓冲区Tgetcopyput2.1结构设计2.2功能设计l提供与用户交互的界面,用户可指定输入、输出文件以及缓冲区大小l利用信号量实现互斥l同时产生多个get、copy和put线程,利用信号量实现多个相同功能的线程间的通信,避免临界资源的非法访问l支持文件输入、输出3测试和使用

2、说明3.1使用说明把相应文件都放在同一个文件夹内,然后使用make工具编译,生成mycopy可执行文件即可。3.2测试说明用信号量实现互斥,同时产生多个get、copy和put线程,利用信号量实现多个同功能的线程间的通信,避免临界资源的非法访问。4程序清单Makefilemycopy:main.cinterface.oGet.oCopy.oPut.odef.hgccmain.cinterface.oGet.oCopy.oPut.o-lpthread-omycopyinterface.o:interface.cdef.hgcc-ci

3、nterface.c-lpthread-ointerface.oGet.o:Get.cdef.hgcc-c-lpthreadGet.c-oGet.oCopy.o:Copy.cdef.hgcc-c-lpthreadCopy.c-oCopy.oPut.o:Put.cdef.hgcc-c-lpthreadPut.c-oPut.o/*def.h*/#ifndefDEF_H#defineDEF_H#include#include#include#include#i

4、nclude#include#include#include#include#include#include#defineBUF_SIZE1024#defineP(x)sem_wait(x)#defineV(x)sem_post(x)externintInFD,OutFD;externintBufferSize;externsem_tTempty,Sempty,Sfull,T

5、full;externchar*BufferS,*BufferT;externintSlen,Tlen;voidppput(void);voidccopy(void);voidggget(void);#endif/*main.c*/#include"def.h"intInFD,OutFD;intBufferSize=BUF_SIZE;sem_tTempty,Sempty,Sfull,Tfull;char*BufferS,*BufferT;intSlen,Tlen;voidinitSem(){sem_init(&Sempty,1,1

6、);sem_init(&Sfull,1,0);sem_init(&Tfull,1,0);sem_init(&Tempty,1,1);}voidinitBuffer(){BufferT=(char*)malloc(sizeof(char)*BufferSize);assert(BufferT!=NULL);BufferS=(char*)malloc(sizeof(char)*BufferSize);assert(BufferS!=NULL);Slen=Tlen=0;}intmain(){interface();initSem();i

7、nitBuffer();pthread_tgid,cid,pid;pthread_create(&gid,NULL,(void*)ggget,NULL);pthread_create(&cid,NULL,(void*)ccopy,NULL);pthread_create(&pid,NULL,(void*)ppput,NULL);pthread_join(gid,NULL);pthread_join(cid,NULL);pthread_join(pid,NULL);return0;}/*Get.c*/#include"def.h"v

8、oidggget(){intfuck=1;while(fuck){P(&Sempty);Slen=read(InFD,BufferS,BufferSize);fuck=(Slen!=0);V(&Sfull);}}/*Copy.c*/#include

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。