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

Вниз

Работа с несколькими потоками   Найти похожие ветки 

 
Std ©   (2006-04-18 16:15) [0]

По нажатию кнопки на форме запускается несколького потоков которые выполняют определенные действия. как узнать когда все потоки закончили работать? нада что бы нажал я на кнопку потоки начали выполнять свои действия, а как выполнили то выскочило окошко с надписью типа: "Потоки зделали свое дело. Потоки могут быть свободны"


 
MBo ©   (2006-04-18 16:20) [1]

создать обработчик события при завершении потока OnTerminate


 
ooops   (2006-04-18 16:32) [2]

var
Swith : Integer;

procedure Form1.ThreadCreate;
begin
Swith := 0;
создание потока 1
 Inc(Swith);
создание потока 2
 Inc(Swith);
end;

procedure TForm1.EndThread;
begin
if Swith = 0 then сообщение
else Dec(Swith);
end;

procedure Thread.Execute;
begin
Synhronize(Form1.EndThread);
end;


 
Мефисто   (2006-04-18 16:34) [3]

ooops    (18.04.06 16:32) [2]

Что это было? Уверены?


 
Сергей М. ©   (2006-04-18 16:51) [4]


> ooops   (18.04.06 16:32) [2]


На то существует событие TThread.OnTerminate


 
Std ©   (2006-04-18 17:38) [5]

за OnTerminate спасибо, но теперь возникла другая необходимость.
у меня существует один StringList он делится на 5 StringList sl1,sl2,sl3,sl4,sl5
соответствеено создается 5 потоков которые обрабатывают эти списки. так вот вопрос: как мне пощитать процент выполения обработки строк всех 5 списков.
для каждого отдельного потока я делал вот так:

for i:=0 to sl.Count-1 do
 begin
   ........
   q:=((i+1)*100)div lt.Count;
 end;

и q передавал в главную форму, это и был процент выполенния для каждого потока.
а вот как зделать процент для всех потоков не соображу


 
MBo ©   (2006-04-18 17:46) [6]

Это учебная задача?


 
Std ©   (2006-04-19 13:07) [7]

ага, учебная


 
MBo ©   (2006-04-19 13:13) [8]

ПроцентДляВсехПотоков = 100 * СуммаСделанногоВсемиПотоками / РазмерДанныхВсехПотоков


 
Сергей М. ©   (2006-04-19 13:13) [9]


> как зделать процент для всех потоков


Вася и Петя поделили яблоко пополам.

Вася съел 50% своей доли, а Петя 30% своей.

Сколько процентов целого яблока съели Вася с Петей ?

Ответ очевиден - (50% + 30%) / 2 = 40%

Откуда взялась "двойка" - догадайся сам)


 
Сергей М. ©   (2006-04-19 13:18) [10]


> Std ©   (19.04.06 13:07) [7]


Ну а вообще говоря городить огород с "делением" стринглиста на кучу стринглистов вряд ли есть повод.


 
Std ©   (2006-04-19 16:41) [11]

Сергей М.
ну я придумал только такой способ как обрабатывать строки из стринг листа в пять потоков одновременно



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

Форум: "Начинающим";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
15-1144819024
Fin
2006-04-12 09:17
2006.05.07
Где задавать вопросы?


2-1145312292
roman_big
2006-04-18 02:18
2006.05.07
вопрос по работе модуля Web и его свойства Action.


2-1144690459
STK
2006-04-10 21:34
2006.05.07
Работа с TreeView, как "нарисовать" дерево


2-1145262213
skysat
2006-04-17 12:23
2006.05.07
IdPOP3


6-1137581764
BoGdaN
2006-01-18 13:56
2006.05.07
Клиент





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский