[問題] winapi waitforsingleobject 問題

作者: destinyXfate (哇勒)   2017-11-29 14:40:03
請問在撰寫windows的程式時
需要使用到waitforsingleobject()以及setevent()
如果要撰寫在wndproc這個訊息處理程式裡面呢
目標:
開兩條執行緒
第一條wait
第二條條做完給event
然後第一條在做剩下的事
假設我要
執行緒一:畫圓然後wait第二條執行緒給event
執行緒二:畫三角形然後setevent
之後執行緒一再做一個動作畫圖或是顯示文字
這有辦法做到嗎
不曉得有沒有大大有相關的範例能提供我參考
謝謝
作者: caras   2017-11-29 14:48:00
不要寫在WndProc裡,你會把UI卡在Wait然後整個程式不動你說的兩個執行緒都另開新的就好了,UI 放著做他該做的事
作者: destinyXfate (哇勒)   2017-11-29 15:06:00
在WM_create 寫兩個 _beginthread嗎?因為還是新手 不知道怎麼在thread裡面畫圖
作者: caras   2017-11-29 15:23:00
為什麼要在 work thread 繪圖,資料處理完再叫 UI thread更新畫面就好了 (InvalidateRect()之類)thread 畫圖不是不行,但有些麻煩事要處理我不確定你為何會想做這麼不正常的事,可能要從頭規劃程式
作者: destinyXfate (哇勒)   2017-11-29 17:28:00
不一定要在thread畫圖 還是有其他辦法看出thread有在等待 然後有給event
作者: Schottky (順風相送)   2017-11-29 20:38:00
send 自己定義的 message 給 UI thread 叫他顯示就行了反正你只是要表現出兩個 thread 有在互動把 UI thread 當作計分板,通知他變更畫面
作者: destinyXfate (哇勒)   2017-11-29 23:15:00
想再請教一點 請問怎麼確定有開成功 兩條thread?
作者: galic (嘎利)   2017-11-29 23:41:00
Debug->Windows->Thread 我猜...
作者: destinyXfate (哇勒)   2017-11-30 03:55:00
我用debugview 看輸出的字 設定的兩個thread都有跑到 但是有人說 看起來好像是同一個thread? Debugview 輸出的字前面[]的數字代表什麼呢
作者: Schottky (順風相送)   2017-12-05 21:01:00
這個問題呢往那個「有人」肚子上揍一拳罵他外行就可以了回頭看看你的整個問題,應該是這個 one punch 法最有效怎麼看都是有人自己不懂在那邊刁難你

Links booklink

Contact Us: admin [ a t ] ucptt.com