У меня есть система, в которой мой синглтон-класс порождает поток для вычисления. Если пользователь запрашивает другое вычисление, в то время как другое вычисление все еще выполняется, я хочу, чтобы он разрушил существующий поток и начал новый. Но следует дождаться полного завершения первого потока, прежде чем продолжить. У меня все работает, но, похоже, у меня проблема с тем, чтобы убедиться, что работает только один поток. Мой подход заключается в том, чтобы функция StartCalculation вызывала mutex-> Lock (). И поток в деструкторе снимает блокировку. Это не работает. Прав ли я, предполагая, что если Lock () не может получить блокировку, он вращается и продолжает пытаться восстановить блокировку? Можно ли вызвать этот Lock () из моего основного потока приложения? Любые идеи полезны. Может быть, блокировка wxMutex - правильный механизм для этого.