多进程间的互斥对象通信
来源:互联网 发布:linux 查看运行的服务 编辑:程序博客网 时间:2024/05/19 09:10
代码程序进程1:
#include<iostream>#include <Windows.h>#include <process.h>//使用进程using namespace std;HANDLE hMutex;//定义一个句柄给互斥对象使用DWORD WINAPI Mythread(LPVOID lp1){ char ct1; WaitForSingleObject(hMutex,INFINITE); cout<<"Get Mutex"<<endl; cout<<"Please input the control charater:"; while(1) { cin>>ct1; if(ct1=='q'||ct1=='Q') { cout<<"Finished"<<endl; break; } else cout<<"Please input again:"<<endl; } ReleaseMutex(hMutex); cout<<"Release the Mutex"<<endl; cout<<"Come to your turn:"<<endl; return 0;}int main(int argc,char* argv[]){ HANDLE hHandle; DWORD dw1; hMutex=CreateMutex(NULL, FALSE, "MyMutexObject");//有名的互斥对象,可用于进程间的同步//检查互斥变量是否创建成功,严格;来说,每次都要在程序中检查这种 if(hMutex==NULL) { cout<<"CreateMutex error :"<<GetLastError(); CloseHandle(hMutex);//关闭互斥变量的句柄 } else { if(GetLastError()==ERROR_ALREADY_EXISTS) { cout<<"Mutex has been created!"<<endl; } else { cout<<"createMutex successfully"<<endl; } hHandle=CreateThread(NULL,0,Mythread,NULL,0,&dw1); cout<<"create worker handle"<<endl; } Sleep(70000); CloseHandle(hHandle); CloseHandle(hMutex); return 0;}
进程2:
include <iostream>#include <Windows.h>#include <process.h>using namespace std;HANDLE hMutex;DWORD WINAPI MyThread(LPVOID lp){ WaitForSingleObject(hMutex,INFINITE); cout<<"Get the Mutex"<<endl; cout<<"Hello!everyone come to my turn"<<endl; ReleaseMutex(hMutex); cout<<"Release the mutex"<<endl; return 0;}int main(int argc,char *argv[]){ DWORD dw; hMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,"MyMutexObject"); if(hMutex==NULL) { cout<<"OpenMutex error:"<<endl; CloseHandle(hMutex); } else { if (GetLastError()==ERROR_ALREADY_EXISTS) { cout<<"Mutex has been opened"<<endl; } else cout<<"Open Mutex successfully"<<endl; HANDLE hHandle=CreateThread(NULL,0,MyThread,NULL,0,&dw); CloseHandle(hHandle);//得把句柄关闭放在这儿,不然会提示句柄没有初始化 cout<<"create worker Mutex "<<endl; } Sleep(70000);//把时间用的很长,便于操作得到反应 CloseHandle(hMutex); //CloseHandle(); return 0;}
0 0
- 多进程间的互斥对象通信
- 使用互斥对象CMutex实现不同的进程间通信
- linux进程间的通信机制--信号量互斥
- 操作系统--进程间的通信,同步和互斥等
- 进程通信使用多个管道的互斥问题
- 进程同步互斥,通信
- 多进程互斥对象排队
- 进程/线程同步、互斥、通信的问题:
- 进程间通信学习总结2---信号量互斥同步
- 多进程,多线程在 Window 和 Unix 下的通信,同步与互斥
- Unix,进程,线程,同步,互斥,通信
- Unix,进程,线程,同步,互斥,通信
- 进程间的同步和互斥
- 多进程之间的共享资源互斥
- 初学者浅谈“进程间通信的同步和互斥的比较简单的作用和用法”
- 四种进程或线程同步互斥的方法:临界区、互斥对象、事件对象、信号量
- 进程的互斥运行
- 进程的互斥运行
- linux无线遇到问题Operation not possible due to RF-kill
- 关于进制转换的三种方法
- DB2 Express c for linux 安装
- 3.Ubuntu16.04添加Docker用户组
- Retrofit用法详解
- 多进程间的互斥对象通信
- 4.Ubuntu16.04Docker的守护式容器
- 5.Ubuntu16.04Docker部署nginx实现静态网站
- Jenkins学习(三)_全局工具配置
- Linux 下显示目录内容的c语言程序
- 图像处理C++基础 03 ——类
- Oracle Community的一个TimesTen thread
- java基本数据类型
- 6.Ubuntu16.04Docker查看和删除镜像