Я использую API очереди работы в режиме реального времени Windows, чтобы выполнить воспроизведение звука, используя WasApi. Очередь создается с использованием rtwqlocksharedworkequeue , и работа представлена с использованием rtwqputwaitingworkitem . Из обратного вызова RtwqputwaitingWorkitem снова вызывается, чтобы поддерживать воспроизведение. Пока все работает нормально. Вопрос в том, как мне чисто выключить очередь из основной нити? Я могу позвонить в rtwqcancelworkitem , но в документации говорится
Поскольку рабочие элементы являются асинхронными, обратный вызов Work-item все еще может быть вызван после rtwqcancelworkitem . Rtwqunlockworkqueue и rtwqshutdown Но они, похоже, не ожидают завершения рабочих элементов.
Подробнее здесь: https://stackoverflow.com/questions/797 ... work-queue