Пожалуйста, смотрите код ниже:
#include <windows.h>
int main(int argc, char* argv[])
{
HANDLE _mutex = ::CreateMutex(NULL, FALSE, "abc");
if (!_mutex)
throw std::runtime_error("CreateMutex failed");
if (::WaitForSingleObject(_mutex, INFINITE) != WAIT_OBJECT_0)
throw std::runtime_error("WaitForSingleObject failed");
printf("Must lock here\n");
if (::WaitForSingleObject(_mutex, INFINITE) != WAIT_OBJECT_0)
throw std::runtime_error("WaitForSingleObject failed");
printf("Why come here????\n");
return 0;
}
Я не знаю, почему распечатывается консоль:
Must lock here
Why come here???
Не работает ли мьютекс?Я хочу, чтобы результат показывал только
Must lock here
и блокировку после печати текста выше.