开发平台(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卡住 然后直接执行另外一段程式码的部分