Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Многопоточность и многозадачность (http://forum.oszone.net/showthread.php?t=205118)

mephistophel 18-04-2011 23:28 1661309

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

Beyound 19-04-2011 14:32 1661723

c#:
System.Threading.Thread Mythread = new System.Threading.Thread(myfunction);

Hilaly 19-04-2011 18:45 1661873

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

mephistophel 20-04-2011 09:58 1662178

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

Hilaly 20-04-2011 10:55 1662221

ну так а тогда в чем проблема?
собственно
Код:

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 1662828

спасибо,всё получилось))


Время: 19:04.

Время: 19:04.
© OSzone.net 2001-