Что лучше было сделать для синхронизации потоков STA?
У меня есть диалоговое приложение MFC с двумя потоками STA: основным и вторым. Я создал объект COM в основном потоке пользовательского интерфейса.
Я вызываю интерфейс COM из второго потока. В главном потоке, чтобы убедиться, что второй поток завершается до того, как основной поток продолжается, я использую цикл для ожидания потока. Этот цикл вызывает циклический вызов MsgWaitForMultipleObjectsEx (timout = 500).
Я сразу зашла в тупик в ожидании. Затем я понял, что насос сообщений MFC, AfxInternalPumpMessage (), помогает только блокировать вызовы, но совсем не помогает в ситуациях тупика.
Затем я добавил Peek / Translate / DispatchMessage код в цикл ожидания, и тогда все заработало.
Теперь, похоже, что без ручного кодирования цикла Peek / Translate / DispatchMessage вы вообще не сможете синхронизировать потоки STA? Любой ожидающий вызов заблокирует вас. Тогда какой самый лучший или стандартный способ синхронизации потоков STA?
Спасибо!