開發平台(Platform): (Ex: Win10, Linux, ...)
VS2010
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
WINAPI
問題(Question):
小弟正在開發一個simulator
利用multithread模仿interrupt的行為
也就是原本的threadA執行到一半的時候
假設這時候硬體來了一個interrupt
就把原本的thread hold住
然後執行interrupt的對應動作
等執行完再讓原本的THREADA繼續往下跑
有看到網路上大部分人不太推薦使用WINAPI的suspendthread
比較建議在threadA找地方加入waitsingleobject
等object抓到後在枉下跑
但因種種原因 這個方法不被採納
想要請教各位大大
這種windows模仿interrupt的行為
除了suspendthread還有別的方法嗎?
或者是有辦法解決suspendthread的block issue嗎?
小弟原本有考慮過使用WINDOWS的signal
但是查了一下windows的signal好像沒有像linux可以support到打給特定的thread
感覺起來他只能by process來送
這樣應該只有MAIN THREAD會收到???(因為我的case裡 mainthread !-= threadA)
餵入的資料(Input):
None
預期的正確結果(Expected Output):
no deadlock
錯誤結果(Wrong Output):
stuck at suspendthread
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/xAA3ME1T
補充說明(Supplement):
程式碼的部分比較陽春
因為ISR 跟原本要做的事情很複雜
我就把他簡單帶過了
重點在於要怎麼模仿出讓特定thread卡住 然後直接執行另外一段程式碼的部分