Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Потоки


Страницы:   1 2

Res ©   (2007-12-05 16:15:00) 

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


KSergey   (2007-12-06 14:35:00) [1]

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

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

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


Dennis I. Komarov   (2007-12-06 10:09:00) [2]

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

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


Rouse_   (2007-12-05 20:35:00) [3]


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

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


KSergey   (2007-12-05 19:06:00) [4]

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


KSergey   (2007-12-05 19:05:00) [5]

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


Rouse_   (2007-12-05 18:03:00) [6]


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

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


Palladin   (2007-12-05 16:47:00) [7]

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


Джо   (2007-12-05 16:41:00) [8]

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


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

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


Palladin   (2007-12-05 16:36:00) [10]

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


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


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


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


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


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


> Изменять ThreadCount


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


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


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

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


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

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

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


Palladin   (2007-12-05 16:30:00) [15]


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

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


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

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


Джо   (2007-12-05 16:28:00) [17]

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

InterlockedIncrement
InterlockedDecrement.


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

Поправка:

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


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

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


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

> res   (05.12.07 16:22) [4]

var
 ThreadCount: integer = 0;

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо