Главная страница
    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.011 c
2-1145525063
Beglec
2006-04-20 13:24
2006.05.07
TEdit - печать с права на лево


15-1144403066
Таня
2006-04-07 13:44
2006.05.07
Трудная задача по Информатике


1-1143642745
Chapchaps
2006-03-29 18:32
2006.05.07
Помогите, пожалуйста!


15-1144826480
syte_ser78
2006-04-12 11:21
2006.05.07
Ваши юношеские заблуждения (компьютерные)


2-1145516327
Сергей И
2006-04-20 10:58
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский