我已经为Windows CE 5.0创建了一个简单的应用程序,作为一些多线程工作的练习。 在WinMain中,我调用了两次创建线程的函数:
myThread = CreateThread(NULL, 0, myThreadFunc(), NULL, 0, NULL);
myThread2 = CreateThread(NULL, 0, myThreadFunc2(), NULL, 0, NULL);
在线程中执行的函数如下所示:
LPTHREAD_START_ROUTINE myThreadFunc()
{
Sleep(3000);
MessageBox(NULL, _T("thread 1"), _T("thread 1"), MB_OK);
return 0;
}
LPTHREAD_START_ROUTINE myThreadFunc2()
{
Sleep(2000);
MessageBox(NULL, _T("thread 2"), _T("thread 2"), MB_OK);
return 0;
}
我期待程序在2秒后从线程2显示对话框,并在接下来的1秒后显示来自线程1的对话框。但实际上当我运行此程序时,它会在2秒后从线程1显示第一个对话框然后在接下来的3秒后从线程2开始对话框。看起来这个踏板是顺序运行的,而不是像我预期的那样同时运行。请问有人能解释一下这种行为吗?
我正在使用Windows CE 5.0,Windows eMbedded Visual C ++和Emulator for Windows CE STANDARDSDK_500。
提前感谢您的帮助。
答案 0 :(得分:0)
编辑:正确答案在评论中。
感谢您的努力。我刚刚意识到我对函数createThread()的调用不正确。而不是:
myThread = CreateThread(NULL, 0, myThreadFunc(), NULL, 0, NULL);
我必须输入:
myThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&myThreadFunc, NULL, 0, NULL);