Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.006 c
15-1196314584
DimonS
2007-11-29 08:36
2007.12.30
Как связать компьютерные сети на большом расстоянии?


15-1196430171
alll_23
2007-11-30 16:42
2007.12.30
Способ задания алгоритма


15-1196459231
Lip
2007-12-01 00:47
2007.12.30
Помогите решить задачу, пожалуйста!


15-1196329619
andreoman
2007-11-29 12:46
2007.12.30
хелп на русском языке к компоненту cxGrid из DevExpress


3-1188287105
pavel_guzhanov
2007-08-28 11:45
2007.12.30
Как в представлении сделать not null поле?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский