CreateMutex创建的互斥变量如何在程序退出时自动销毁
有个硬件,最多只能使用8个资源.
所以,同时最多只能有8个相同的exe运行.
我用下面的方法
-----------------------------------------------
程序一进去调用:
static long CABC::GetID()
{
static long id = -1;
if (id == -1){
char lc[8] = {'1','2','3','4','5','6','7','8'};
long i;
char lc_ABC_MUTEX[] = {"ABC"};
CString ls_swap;
for (i = 0;i<8;i++){//分别尝试,是否有"ABC1","ABC2"......"ABC8"
ls_swap = lc_ABC_MUTEX;
ls_swap += lc[i];
HANDLE hMutex=CreateMutex(NULL, FALSE, ls_swap);
if(GetLastError()==ERROR_ALREADY_EXISTS){
}
else{
id = i;
break;
}
}
}
return id;
}
-----------------------------------------------
连续运行8个同样的EXE,分别取回0,1,......,7,第9个确实返回 -1;
把ID=7的那个关掉,第9个也可以取到7
但是,我把ID=0到ID=6的前7个关掉,第9个还是无法取到0,必须把前面所有的都关掉,第9个才能取到0.
如何解决?
谢谢!