Windows CE简单的多线程应用程序 - 线程调度

时间:2011-12-13 16:39:04

标签: multithreading windows-ce

我已经为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。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

编辑:正确答案在评论中。

感谢您的努力。我刚刚意识到我对函数createThread()的调用不正确。而不是:

myThread = CreateThread(NULL, 0, myThreadFunc(), NULL, 0, NULL);

我必须输入:

myThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&myThreadFunc, NULL, 0, NULL);