Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.30;
Скачать: CL | DM;

Вниз

Потоки   Найти похожие ветки 

 
Res   (2007-12-05 16:15) [0]

Здравствуйте! Подскажите пожалуйста как узнать количество запущенных потоков?


 
Сергей М. ©   (2007-12-05 16:19) [1]

Смотря какая ОС.


 
res   (2007-12-05 16:20) [2]

Win XP


 
Юрий Зотов ©   (2007-12-05 16:21) [3]

Если Вы запускаете их сами, то введите счетчик. Если нет, то: http://www.pcreview.co.uk/forums/thread-2619677.php


 
res   (2007-12-05 16:22) [4]

Запускаю сам, мне необходимо узнать кол-во живых из запущенных :)


 
Юрий Зотов ©   (2007-12-05 16:26) [5]

> res   (05.12.07 16:22) [4]

var
 ThreadCount: integer = 0;

procedure TMyThread.Execute;
begin
 Inc(ThreadCount);
 try
   ....
 finallly
   Dec(ThreadCount);
 end
end;


 
Сергей М. ©   (2007-12-05 16:27) [6]

Ну, предположим, ты сделал перекличку "живых".
Что дальше ? Какова цель прведения этой "переклички" (или, если угодно, ревизии) ?


 
Юрий Зотов ©   (2007-12-05 16:28) [7]

Поправка:

Изменять ThreadCount надо через Synchronize.


 
Джо ©   (2007-12-05 16:28) [8]

> [5] Юрий Зотов ©   (05.12.07 16:26)

InterlockedIncrement
InterlockedDecrement.


 
res   (2007-12-05 16:29) [9]

Мне нужно если живых 0, то form1.Timer1.Enabled:=True;


 
Palladin ©   (2007-12-05 16:30) [10]


> Юрий Зотов ©   (05.12.07 16:28) [7]

а можно и через InterlockedDecrement и Increment :)


 
Юрий Зотов ©   (2007-12-05 16:30) [11]

> Джо ©   (05.12.07 16:28) [8]

Точно. Забыл о них.


 
DrPass ©   (2007-12-05 16:32) [12]


> Юрий Зотов ©   (05.12.07 16:28) [7]
> Поправка:
>
> Изменять ThreadCount надо через Synchronize.

Зачем? Это ж атомарная операция, здесь конфликт просто невозможен


 
Сергей М. ©   (2007-12-05 16:32) [13]


> Изменять ThreadCount


После модификации ThreadCount поток еще жив, игнорирование этого факта м.б. критично в ряде случаев.


 
Сергей М. ©   (2007-12-05 16:33) [14]


> DrPass ©   (05.12.07 16:32) [12]


> здесь конфликт просто невозможен


Возможен.
Это неоднократно обсуждалось в форуме.


 
Palladin ©   (2007-12-05 16:36) [15]

И у Рихтера тоже, насколько я помню, обсуждалось, надо глянуть...


 
Джо ©   (2007-12-05 16:39) [16]

Кстати, сижу щас смотрю Remarks по этим функциям. Ограничения интересные там. Лично я никогда проблем с ними не огребал, но на будущее подумаю, не использовать ли взамен InterlockedIncrementAcquire & InterlockedIncrementRelease.


 
Джо ©   (2007-12-05 16:41) [17]

Хотя, скорее всего,  там крит. секции используются внутри, так что иногда может и лучше это делать «руками».


 
Palladin ©   (2007-12-05 16:47) [18]

АФАИК, наоборот, критические секции как раз и используют их для своего внутреннего счетчика...


 
Rouse_ ©   (2007-12-05 18:03) [19]


> мне необходимо узнать кол-во живых из запущенных

В смысле, засуспенден или нет?


 
KSergey ©   (2007-12-05 19:05) [20]

А что есть "живые потоки" в вашем понимании?
Это к автору.


 
KSergey ©   (2007-12-05 19:06) [21]

А вообще занятно наблюдать интеллигентную беседу, простите, голубых :)


 
Rouse_ ©   (2007-12-05 20:35) [22]


> А что есть "живые потоки" в вашем понимании?

Естественно есть, раз могут быть "мертвые" :)
К примеру если смотреть в ХР (в отличие от 2000) то (начиная с оффсета в TEB fs:[124] - где лежит указатель на CurrentThread)  ситуация будет выглядеть так: fs:[124] -> ThreadsProcess -> ThreadListHead будет хранить данные по всем потокам приложения выполнявшимся в течении его жизни, у них просто будет выставленно State = Terminated. Это мертвые потоки :) А живые - это те которые живые, даже если и засуспенженны :)
Вот здесь вторая глава очень интересная :)
http://www.wasm.ru/print.php?article=packers2#2


 
Dennis I. Komarov ©   (2007-12-06 10:09) [23]

> [21] KSergey ©   (05.12.07 19:06)

Розыча и Сергея М не успели туда добавить :)


 
KSergey ©   (2007-12-06 14:35) [24]

> Rouse_ ©   (05.12.07 20:35) [22]
> > А что есть "живые потоки" в вашем понимании?
>
> Естественно есть, раз могут быть "мертвые" :)

Я имел в виду уточнить у автора что такое в его понимании "живые потоки". А то мало ли...

Впрочем, ему это все, очевидно, уже не интересно.



Страницы: 1 вся ветка

Текущий архив: 2007.12.30;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.019 c
2-1196610039
Dark
2007-12-02 18:40
2007.12.30
Свойства файлов


15-1193772243
Marser
2007-10-30 22:24
2007.12.30
ADSL-модем. "шо это было?!"(с)


2-1196706403
BD
2007-12-03 21:26
2007.12.30
Поиск в базе данных (MS Access)


6-1174490071
Fantom348
2007-03-21 18:14
2007.12.30
URL Decoding


15-1196492246
Vladimir_K
2007-12-01 09:57
2007.12.30
Заблокированный файл