Войти

Показать полную графическую версию : Многопоточность и многозадачность


mephistophel
18-04-2011, 23:28
Доброго всем времени суток!)))Мне необходимо было написать программу , порождающую четыре потока, каждому из которых выделяется четвертая часть окна приложения. Первый поток выводит в свою область возрастающую числовую последовательность 0,1,2,…, второй – последовательность чисел Фибоначчи. Третий поток заполняет свой участок окна прямоугольниками случайного размера и цвета, четвертый поток фиксирует в трех переменных и выводит их в своей области окна число запусков каждого из предыдущих трех потоков. Первые три потока я создал,а вот как создать четвёртый,который фиксирует в трех переменных и выводит их в своей области окна число запусков каждого из предыдущих трех потоков, не знаю.Не могли бы вы мне подсказать,как создать этот поток?Заранее спасибо))))

Beyound
19-04-2011, 14:32
c#:
System.Threading.Thread Mythread = new System.Threading.Thread(myfunction);

Hilaly
19-04-2011, 18:45
Честно говоря я не понял что именно тебе требуется))
но например главный поток, создающий остальные, подсчитывает количество запусков и передает их в 4 поток.
Или как вариант - запускать первые три из четвертого..

mephistophel
20-04-2011, 09:58
Beyound,мне надо юзать С++)
Hilaly,я сам,если честно,не очень понял своё задание,но походу,чтобы в четвёртом потоке подсчитывалось кол-во запусков остальных трёх и четвёртый поток - первичный

Hilaly
20-04-2011, 10:55
ну так а тогда в чем проблема?
собственно

int nThread1=0;
HANDLE h = CreateThread(NULL, 0, ThreadFunc, &nThread1, 0, NULL);

ThreadFunc(LPVOID pParam)
{
int* pData = (int*)pParam;
if(pData!=NULL)
*pData=(*pData)+1;
/*
Ваша дальнейшая реализация
*/
}

Как пример - в качестве параметра передавать ссылку на счетчик запуска потока, а он, соответственно если запустится увеличивает этот счетчик.
Или проверять из главного потока запустился ли дочерний и увеличивать счетчик

HANDLE h = CreateThread(NULL, 0, ThreadFunc, NULL, 0, NULL);
if(h!=NULL)
nThread1++;

mephistophel
21-04-2011, 07:44
спасибо,всё получилось))




© OSzone.net 2001-2012