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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
2-1145516327
Сергей И
2006-04-20 10:58
2006.05.07
Может кто подскажет как произвести обратный отсчет времени


2-1145522700
Zaq123
2006-04-20 12:45
2006.05.07
Как создать текстовый файл с кодовой страницей 866?


15-1145023037
iamdanil
2006-04-14 17:57
2006.05.07
Глюк винды (фотка)


15-1145096771
Muha89
2006-04-15 14:26
2006.05.07
htmlDump


2-1145510767
lionmen
2006-04-20 09:26
2006.05.07
Рамка в WORDe