我想用Visual Studio 2010用WINAPI开发嵌入式HW模拟器。 我试图模拟中断时遇到了问题... 中断行为的行为如下... 当threadA正在工作,同时出现中断时, 因此threadA将被保留并跳转以执行ISR功能, ISR功能已经完成后,ThreadA中可以恢复并继续工作......MSDN模拟中断行为
我试图来模拟多线程 这个动作所以被称为中断线程的线程,这将暂停的ThreadA和 做ISR操作,然后恢复threadA,就像下面的代码...
但问题是,我的鳕鱼当调用sespendthread() 可以看到前面的printf(“a”),但printf(“b”)不能...
是否有任何其他方法来模拟MSDN中断? 我认为有关使用边界处理和signalhandler来解决这个问题, 但它看起来像窗口信号不能被发送到特定的线程, 只能被发送到特定的工艺......
HANDLE thd_main;
HANDLE thd_int;
HANDLE Array_Of_Thread[2];
thd_main(){
while(1){
/* polling for jobs and do specific operation */
}
}
thd_int(){
while(1){
if (WaitForSingleObject(g_timer, infinite) == WAIT_TIMEOUT){
printf("a");
suspendthread(thd_main);
printf("b");
/* ISR operation */
resumethread(thd_main);
}
}
}
int main()
{
thd_main = CreateThread(NULL, 0,
Thread_main, NULL, 0, NULL);
thd_int = CreateThread(NULL, 0,
Thread_int, NULL, 0, NULL);
Array_Of_Thread[0] = thd_main;
Array_Of_Thread[1] = thd_int;
WaitForMultipleObjects(3, Array_Of_Thread_Handles, TRUE, INFINITE);
closehandle(thd_main);
closehandle(thd_int);
return 0;
}