int _tmain(int argc, _TCHAR* argv[])
{
HANDLE mm=CreateMutex(NULL,FALSE,NULL);
WaitForSingleObject(mm,INFINITE);
Sleep(1000);
WaitForSingleObject(mm,INFINITE);
Sleep(1000);
WaitForSingleObject(mm,INFINITE);
Sleep(1000);
CloseHandle(mm);
return 0;
}
Вопрос про CreateMutex и WaitForSingleObject
Если верить тому, что написано в MSDN, то в следующем примере программа должна на втором выхове "WaitForSingleObject" зависнуть. Но этого не происходит. Программа удачно завершается. Почему?
Код:
Суть в том, что есть класс. Его функции вызываются различными потоками. Необходимо что бы в один момент времени работала иключительно одна из функций данного класса, а прочие вызваные функции ожидали очереди (как-бы из парралельного выполения сделать последовательное). Может есть какая другая реализация данной задачи?
Заранее благодарен.
P.S.: У меня VC2003.
Ты вызываешь wait-function в одном и том же потоке, который и владеет Mutex'ом, поэтому никакого зависания быть и не должно.
Большое спасибо!
Оказывается это я сам себя обманывал, а оно (в классе) все работает. :)