スニペットは次のとおりです:prog1:
HANDLE hM;
hM = CreateMutexA(NULL,TRUE, "abc"); // I have to use TRUE otherwise WaitForSingleObject fails.. by design it wants to take ownership and w//o TRUE there is no owner anyway right? <<-- **check this please if its true**
...
prog2:
HANDLE hM;
hM = OpenMutexA(MUTEX_ALL_ACCESS,NULL, "abc");
while(WaitForSingleObject(hM,INFINITE)) {
// do smthing
ReleaseMutex(hM);
hM = OpenMutexA(MUTEX_ALL_ACCESS,NULL, "abc"); // In order to continue while loop but it doesnt rewind,
}
問題>半無限ループにはなりません...一度入るとそれだけです。
目的?一部のプロセスのアクティビティを監視するには(クラッシュした場合は再起動します)、無限ループがCPUに大きな打撃を与え、Sleepを使用できないため、asaspで再起動する必要があります(while(1)またはfor( ;;)投稿してください)
アップデート
while(WaitForSingleObject(hM、INFINITE)== WAIT_ABANDONED){...}である必要がありますが、正しくコピーしませんでした:)。
一度動作すると再び待機しなくなりますが、ハンドルをリセットする方法はありますか?
prog1:
HANDLE hM;
hM = CreateMutexA(NULL,TRUE, "abc");
prog2:
HANDLE hM;
hM = OpenMutexA(MUTEX_ALL_ACCESS,NULL, "abc");
while(WaitForSingleObject(hM,INFINITE)) {
ReleaseMutex(hM);
Sleep(1000);
CloseHandle(hM)
// do smthing like CreateProcess()
Sleep(1000);
hM = OpenMutexA(MUTEX_ALL_ACCESS,NULL, "abc");
}
誰かがこの投稿に何かコメントを追加したい場合は、このように機能します。