Главная страница
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
15-1144907952
elfebet
2006-04-13 09:59
2006.05.07
Программа для работы с этими форумами


2-1145460774
simplelame
2006-04-19 19:32
2006.05.07
FR 3.0


2-1145364183
Ega23
2006-04-18 16:43
2006.05.07
Редактирование содержимого TImageList


6-1136640560
zag2art
2006-01-07 16:29
2006.05.07
отправка сообщения icmp - reply под Windows XP


2-1145365094
_Zzz_
2006-04-18 16:58
2006.05.07
Формат чисел вещественного типа