我有一個線程需要在生成消息後立即發送消息(使用SendInput發送的模擬鼠標事件)。我希望這發生在沒有睡眠的循環中;添加任何睡眠傷害性能,因爲我基本上希望事件一旦生成就立即進入事件循環。當然,我也不希望消費者線程中的循環佔用所有的CPU,所以我不能讓它繼續運行,儘管這給了我很好的性能。如何創建阻塞函數
據我所知,這個任務是讓消費線程等待一些信號,表明生產線程提供了一些東西來分派(?),但如何最好地做到這一點?如果我想讓兩個線程互斥,我想我需要兩個互斥體;消費者等待生產者,生產者一旦消費者恢復運行就會繼續生產。到目前爲止還沒有真正做到這一點,我真的不知道如何做到最好。 CriticalSections vs. mutexes,完全不同的東西?
我不想從生產者線程調用SendInput的原因是該線程('主線程')實際運行時響應鼠標移動消息,被鼠標鉤截獲,併發送更多鼠標來自該線程的消息不允許線程在模擬的鼠標移動事件處理之前芬蘭語,爲我弄亂了事情。正如我懷疑的那樣,將SendInput調用移動到另一個線程,以便原始線程可以完成解決問題的方式,但現在我需要使消費者響應更快;鼠標消息一直保持着良好的速度,因爲只有1ms的睡眠時間會使循環速度變慢,並且信息處理開始滯後;如果我沒有睡覺,一切都很好。
謝謝。
謝謝。我們會仔細研究它,以備將來參考,儘管看起來這次睡眠對我來說仍然適用;這是幾個cout打印輸出,當鼠標輸入被分派時,最終被執行,放慢執行:s – 72con 2010-08-17 17:13:20