Я создал простое приложение для 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. Но на самом деле, когда я запускаю эту программу, оно показывает первое диалоговое окно из потока 1 через 2 секунды. а затем диалоговое окно из потока 2 через 3 секунды. Кажется, что эти ступени работают последовательно, а не одновременно, как я ожидал. Кто-нибудь может объяснить мне это поведение, пожалуйста?
Я использую Windows CE 5.0, Windows eMbedded Visual C ++ и эмулятор для Windows CE STANDARDSDK_500.
Заранее благодарю за помощь.