Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2012, 10:47   #1
danil123
Пользователь
 
Регистрация: 06.07.2012
Сообщений: 80
По умолчанию Потоки

Необходимо , чтобы один поток взял из файла первую строчку, второй вторую и т.д. У меня лишь получается, что все потоки грузят одну и ту же строку. Как исправить?
danil123 вне форума Ответить с цитированием
Старый 24.12.2012, 11:39   #2
_Den_1984
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 54
По умолчанию

Поток будет грузить только то что ты ему укажешь грузить. Значит где то ошибка. на код посмотреть бы.
_Den_1984 вне форума Ответить с цитированием
Старый 24.12.2012, 11:45   #3
danil123
Пользователь
 
Регистрация: 06.07.2012
Сообщений: 80
По умолчанию

Основной код
Код:
procedure TForm1.Button1Click(Sender: TObject);
var pot:array[1..10]of potok;
i:integer;
begin
for i :=1 to 10   do
begin
pot[i]:=potok.Create(true);
pot[i].FreeOnTerminate:=true;
pot[i].Resume;
end;
    end;
Код потоков
Код:
implementation
uses unit1;

procedure potok.execute;
begin
//здесь загрузка из файла 
end; 

procedure potok.synch;
begin
while True do
       begin
  synchronize(execute);
  sleep(10);
       end;
danil123 вне форума Ответить с цитированием
Старый 24.12.2012, 12:13   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Пускайте 1 поток, а он пускай создает 2 поток, тот поток создает 3 поток и так по леснеце вниз.
Каждый поток берет заранее подсчитанное кол-во строк для работы и отсекает их у файла(вырезает), файл передает вновь созданному им потоком, затем не обрабатывает, а ждет когда подчиненный ему поток завершить работу.

Получается что-то вроде лестницы с эффектом бумеранга. я бы так сделал.
Человек_Борща вне форума Ответить с цитированием
Старый 24.12.2012, 12:42   #5
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
Сообщение от danil123 Посмотреть сообщение
Как исправить?
Убрать из потоковой процедуры обращение к файлу совсем.
Организовать построчное чтение файла в потоке-диспетчере, например, основном потоке.
Организовать в потоке-диспетчере создание доп.потоков, каждый из которых обрабатывает одну строку, переданную ему потоком-диспетчером параметром в конструкторе.
xoodoo вне форума Ответить с цитированием
Старый 24.12.2012, 14:57   #6
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

synchronize - убрать и забыть, пока не попросят впомнить
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки _Mixer_ Общие вопросы по Java, Java SE, Kotlin 4 16.10.2011 19:25
потоки AlexMe Общие вопросы Delphi 3 18.07.2011 05:17
Потоки _-Re@l-_ Общие вопросы Delphi 6 18.01.2011 20:45
потоки пауэрлифтинг Общие вопросы Delphi 5 23.05.2010 14:19
потоки tanek Помощь студентам 6 15.03.2010 21:42