失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 操作系统——控制进程并发 高效并发正确誊抄

操作系统——控制进程并发 高效并发正确誊抄

时间:2023-06-16 10:15:23

相关推荐

操作系统——控制进程并发 高效并发正确誊抄

/*控制进程并发,实现高效正确的并发誊抄过程*/#include "stdio.h"#include "conio.h"#include "windows.h"#include <iostream>using namespace std;HANDLE Mutex; HANDLE buf1_e;HANDLE buf1_f;HANDLE buf2_e;HANDLE buf2_f;typedef struct _THREADDATA{FILE *infile;char *buf1;char *buf2;}*LPTHREADDATA, THREADDATA;DWORD WINAPI get(LPVOID lParam){LPTHREADDATA pData = (LPTHREADDATA)lParam;for (;*pData->buf1!=EOF;) {WaitForSingleObject(buf1_e,INFINITE);//p*pData->buf1=fgetc(pData->infile);ReleaseSemaphore(buf1_f,1,NULL);//v}return 0;}DWORD WINAPI copy(LPVOID lParam){LPTHREADDATA pData = (LPTHREADDATA)lParam;for (;*pData->buf1!=EOF;) {WaitForSingleObject(buf1_f,INFINITE);//p(buf1_f)WaitForSingleObject(buf2_e,INFINITE);//p(buf2_e)*pData->buf2=*pData->buf1;ReleaseSemaphore(buf1_e,1,NULL);//v(buf1_e)ReleaseSemaphore(buf2_f,1,NULL);//v(buf2_f)}return 0;}DWORD WINAPI put(LPVOID lParam){LPTHREADDATA pData = (LPTHREADDATA)lParam;for (;*pData->buf1!=EOF;) {WaitForSingleObject(buf2_f,INFINITE);//pcout<<*pData->buf2; ReleaseSemaphore(buf2_e,1,NULL);//v}return 0;}int main(){// Mutex=CreateMutex(NULL,FALSE,NULL); buf1_e=CreateSemaphore(NULL,1,1,NULL);buf1_f=CreateSemaphore(NULL,0,1,NULL);buf2_e=CreateSemaphore(NULL,1,1,NULL);buf2_f=CreateSemaphore(NULL,0,1,NULL);FILE *infile=fopen("in.txt","r");char buf1,buf2;LPTHREADDATA pData = new THREADDATA;pData->infile=infile;pData->buf1=&buf1;pData->buf2=&buf2;DWORD ThreadId1,ThreadId2,ThreadId3;::CreateThread(NULL, 0, copy, (LPVOID)pData, 0, &ThreadId2);::CreateThread(NULL, 0, put, (LPVOID)pData, 0, &ThreadId3); ::CreateThread(NULL, 0, get, (LPVOID)pData, 0, &ThreadId1);Sleep(20);//getch();fclose(infile);return 0;}

如果觉得《操作系统——控制进程并发 高效并发正确誊抄》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。