Прежде всего, вы должны иметь в виду, что Windows предоставляет ряд механизмов для работы с потоками: Порты завершения ввода / вывода , пулы старых потоков и новые пулы потоков .В зависимости от того, что вы делаете, любой из них может быть полезен для ваших целей.
Что касается «отправки» данных из одного потока в другой, у вас есть несколько вариантов.Очереди сообщений Windows являются поточно-ориентированными, и у потока (даже если у него нет окна) может быть очередь сообщений, в которую можно отправлять сообщения, используя PostThreadMessage
.
. Я также опубликовалкод для потокобезопасной очереди в другой ответ .
Поскольку поток продолжает выполняться, но учтите, что когда произошло изменение, типичным методом является его вызов WaitForSingleObject
со значением тайм-аута 0, затем проверьте возвращаемое значение - если оно WAIT_OBJECT_0
, событие (или что-то еще) было установлено, поэтому оно должно принять к сведению изменение.Если это WAIT_TIMEOUT
, никаких изменений не произошло, и он может продолжить выполнение.В любом случае, WaitForSingleObject
возвращается немедленно.