本来只对一个应用程序内多个线程进行同步有所了解,书上也只讲了同一进程内的不同线程的同步。只是在最后说“如果需要在多个进程间的各个线程实现同步的话,可以使用互斥对象和事件对象。”
于是按照同一进程内的线程同步的思路编写不同进程之间的线程同步,用互斥对象,勉强可以实现。现将测试代码写下。
方便起见,两个进程(.exe)都用win32 控制台程序来实现。下面是process1的源代码:
- /**************process1.cpp****************/
- #include "windows.h"
- #include "iostream.h"
- HANDLE hMutex;
- void main()
- {
- hMutex = CreateMutex(NULL,TRUE,"lrklx");
- if (ERROR_ALREADY_EXISTS==GetLastError())
- {
- hMutex = OpenMutex(SYNCHRONIZE,TRUE,"lrklx");
- }
- ReleaseMutex(hMutex);
- while (1)
- {
- WaitForSingleObject(hMutex,INFINITE);
- Sleep(1000);
- cout<<"process1 !!"<<endl;
- ReleaseMutex(hMutex);
- }
- }
process2.cpp代码与process1相同,只不过第22行改为cout<<"process2 !!"<<endl;
调试发现,这两个进程可以实现同步。