Visual Studio 2010でWINAPIを使用して埋め込みHWシミュレータを開発しようとしています。 割り込みをエミュレートしようとしたときに問題が発生しました... 割り込みの動作は... threadAが動作している間に割り込みが発生します したがってthreadAがホールドされ、ISR機能を実行するためにジャンプします。 ISR機能が行われている 後、スレッドAが再開して作業を続けることができます...MSDNは割り込みの動作をシミュレートします
私はスレッドAを一時停止し、 がどうなる割り込みスレッドと呼ばれるスレッドは、そこにあるマルチスレッド によって、このアクションをシミュレートしてみましたISR操作を行い、次にthreadAを再開します。
しかし、問題は私のコードprintf( "b")は表示されません。
MSDNで割り込みをシミュレートする方法はありますか? 、 のみ特定のプロセスに送信することができます...私は、 をこの疑問を解決するためにsingalsとsignalhandlerを使用する方法について考えられますが、Windowsの信号が特定のスレッドに送信できないように見えます
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;
}