Форум: "WinAPI";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];
Внизуправление потоками Найти похожие ветки
← →
Dot (2007-08-02 12:30) [0]Приветствую всех.
существует такая задача.
поток A должен породить n потоков B, каждый из которых должен породить n потоков C.
при этом по завершению i-ого потока B, поток A создаёт ещё поток из этой серии, то есть число потоков должно оставаться постоянным = n.
тоже самое и с потоками серии С.
собственно я объявляю
N = 10; к примеру
и далее используя мьютексы каждый поток класса B при завершении делает декремент глобального счетчика, который в свою очередь инкрементируется потоком A при порождении потока серии B. там же, в потоке A я проверяю условие равенства n и глобального счётчика, если счётчик меньше, то создаю ещё один поток серии B.
однако, как уже может быть стало кому понятно, при порождении потоков класса C нам придётся создавать n глобальных счётчиков , иначе, если мы будем работать с одним, то создастя всего n потоков C серии первым потоком из серии B.
корочем как решить эту проблему?
массив счётчиков?
не совсем дружу с условными переменными, потому приму любую помощь
← →
tesseract © (2007-08-02 12:35) [1]Попробуй создать класс потока с счётчиком дочерних - имхо так будет проще и логичней.
ЗЫ: При обращении к счётчику из дочерних потоков, не забываем про крит секции.
← →
Dot (2007-08-02 12:38) [2]вообще я пишу на С под FreeBSD, потому с классами работать никак не получится.
крит сексия и мьютекс собственно одно и тоже, не забываю =)
мне собственно алгоритм нужен..
я вот подумал передавать потокам C в качестве аргумента указатель на счётчик, который будет в области памяти потока B. в общем то оно верно, однако у меня уже есть что передавать в качестве аргумента, и как это провернуть не знаю =(
← →
umbra © (2007-08-02 13:21) [3]
> однако у меня уже есть что передавать в качестве аргумента
передавайте указатель на запись, в которой содержатся все нужные аргументы.
← →
Dot (2007-08-02 13:28) [4]только и остаётся что так..
спасибо большое
← →
tesseract © (2007-08-02 15:09) [5]
> вообще я пишу на С под FreeBSD, потому с классами работать
> никак не получится.
А чего тогда в заголовке сообщения D7+WinXP ?
Структур-ы то он держит ? Массив стуктур с полной инфой по процессам, PID/номер etc. В процесс передавай номер в массиве или по ссылке элемент массива.
← →
Dot (2007-08-02 16:57) [6]>А чего тогда в заголовке сообщения D7+WinXP
да просто хорошо знаю D7 =) потому если на ней родной код кто нить написал бы, было бы просто разобраться. да и вообще как то специальность дельфянщика
а насчёт структур да, я собственно так и сделал. лучше варианта пока не придумал.
← →
Сергей М. © (2007-08-03 10:07) [7]
> Dot
А семафоры в FreeBSD присутствуют ?
Если да, то ими будет довольно удобно воспользоваться для реализации приведенной логики.
← →
umbra © (2007-08-03 11:34) [8]http://www.lambdacs.com/cpt/FAQ.html#Q10
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c