24.08.2006, 19:06
общий
это ответ
Здравствуйте, Александр Михайлович!
Вот консольное приложение (см. приложение).
Считайте что функция PlayMySong() соответствует ThreadFunc1(), а PaintMyShape соответствует ThreadFunc2();
Пример демонстрирует как эти 2 функции работают параллельно.
Думаю, разберетесь.
P.S. Возможно, приведенный код написан не корректно... (но он работает). я писал его только чтобы показать работу потоков...
Удачи!
Приложение:
#include <windows.h>#include <process.h>#include <stdio.h>DWORD WINAPI ThreadFunc1(LPVOID lpParam){ int i; printf("First thread running!\n"); for(i=0; i<10; i++){ printf("1 -> %d\n",i); Sleep(1000); } return 0;}DWORD WINAPI ThreadFunc2(LPVOID lpParam){ int i; printf("Second thread running!\n"); for(i=0; i<10; i++){ printf("2 -> %d\n",i); Sleep(1500); } return 0;}int main(){ HANDLE ArrayThread[2]; HANDLE hThread1,hThread2; hThread1 = CreateThread(NULL, 0, ThreadFunc1, NULL, 0, NULL); if(hThread1 == NULL) ExitProcess(0); hThread2 = CreateThread(NULL, 0, ThreadFunc2, NULL, 0, NULL); if(hThread2 == NULL) ExitProcess(0); ArrayThread[0] = hThread1; ArrayThread[1] = hThread2; // Ждем, пока потоки не завершат свою работу WaitForMultipleObjects(2, ArrayThread, TRUE, INFINITE ); // Закрываем дескрипторы CloseHandle(hThread1); CloseHandle(hThread2); return 0;}