⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.cpp

📁 进程通信与进程同步机制实践 有三个进程R、M、P
💻 CPP
字号:
#include<iostream.h>
#include<windows.h>
#include <stdio.h>
void main()
{
	unsigned char my_r;
	HANDLE hFileMap = OpenFileMapping(FILE_MAP_WRITE,false, "my_file");
	if(hFileMap == NULL)
    {
      cout<<"文件映射错! "<<endl;
      return ;
	}
	HANDLE sr = CreateSemaphore(NULL,10,10,"my_sr");
	HANDLE sm = CreateSemaphore(NULL,0,10,"my_sm");
	HANDLE metux = CreateSemaphore(NULL,1,1,"my_mutex");
	PVOID pvFile = MapViewOfFile(hFileMap,FILE_MAP_WRITE,0,0,0);
    char* p=(char*)pvFile;
	char arry[32];
	char flag='y';
	while(flag=='y')
	{
       cout<<"请输入数据:"<<endl;

	   fflush(stdin);
	   gets(arry);

	   WaitForSingleObject(sr,INFINITE);
       WaitForSingleObject(metux,INFINITE);
	   my_r=*p;
	   strncpy(p + 3 + my_r * 32, arry, 32);
	   my_r=(my_r+1)%10;
	   *p=my_r;
       ReleaseSemaphore(metux, 1, NULL);
       ReleaseSemaphore(sm, 1, NULL);
	   cout<<"是否继续y/n:"<<endl;
	   fflush(stdin);
	   scanf("%c", &flag);
	}
	UnmapViewOfFile(pvFile);
    CloseHandle(hFileMap);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -