У меня есть поток, которому нужно отправить сообщение (имитируемое событие мыши, которое оно отправляет с использованием SendInput), как только оно сгенерировано.Я хочу, чтобы это происходило в цикле, когда нет сна;добавление любого сна снижает производительность, так как я хочу, чтобы события сразу попадали в цикл обработки событий после их генерации.Конечно, я также не хочу, чтобы цикл в потребительском потоке загружал все процессоры, поэтому я не могу просто продолжать его запуск, хотя это дает мне хорошую производительность.
Насколько я понимаю,задача состоит в том, чтобы заставить потребляющий поток ждать чего-то, что сигнализирует о том, что производящий поток предоставил что-то для отправки (?), но как лучше всего это сделать?Я думаю, что мне нужно что-то вроде двух мьютексов, если я хочу сделать два потока взаимоисключающими;потребитель ждет производителя, а производитель продолжает работу, как только потребитель возобновит работу?До сих пор это не получалось, и я действительно не знаю, как лучше всего это сделать;CriticalSections против мьютексов, что-то совершенно другое?
Причина, по которой я не хочу вызывать SendInput из потока производителя, заключается в том, что этот поток («основной поток»?) Фактически выполняется в ответ на сообщение о перемещении мыши, перехваченный ловушкой мыши и отправка большего количества сообщений мыши из этого потока, не позволила потоку завершить работу до того, как было обработано событие перемещения имитированной мыши, что мешало мне.Как я и подозревал, перемещение вызова SendInput в другой поток, чтобы исходный поток мог завершить работу, устранило проблему, но теперь мне нужно сделать потребителя более отзывчивым;Сообщения от мыши продолжают поступать в хорошем темпе, я полагаю, так как всего лишь 1 мс сна сделал цикл слишком медленным, а обработка сообщений стала отставать;все хорошо работает, если я не сплю.
Спасибо.