Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потоки и работа с TstringList 
:(
    Опции темы
mimo
Дата 19.5.2011, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 8.5.2011

Репутация: нет
Всего: нет



Здравствуйте, есть чекбокс
Код

procedure TForm1.chk1Click(Sender: TObject);
var
temp: Tstringlist;
begin
temp: TstringList.create;
temp.loadfromfile('test.txt');
end;


есть потоки
   With TClientThread.Create(true) do
    begin
     CheckProperty1 := chk1.Checked;
    Resume;
   end;
и мне необходимо, чтобы  в процедуре .Execute каждый поток работал с текстовым файлом, загруженным в temp. Как осуществить такую работу правильно? потокобезопасно? Можно ли сделать такое в самом .Execute ,т.е. каждый поток создавал и загружал в temp один и тот же текстовый файл? или как перенести этот temp в .Execute?
PM MAIL   Вверх
Snowy
Дата 20.5.2011, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Проще всего по реализации - в каждом потоке создать свой temp и грузить в него файл. Конфликтов не будет.
Если делать через единый temp, то потоки будут мешать друг другу.
Монопольный захват может свести на нет сам смысл использования тредов.
Непосредственная реализация зависит от того, насколько большой файл.
PM MAIL   Вверх
bems
Дата 20.5.2011, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(Snowy @  20.5.2011,  00:26 Найти цитируемый пост)
Если делать через единый temp, то потоки будут мешать друг другу.
Но если каждый тред только читает temp, а результаты туда не пишет, то должно быть ок



--------------------
Обижено школьников: 8
PM MAIL   Вверх
mimo
Дата 20.5.2011, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 8.5.2011

Репутация: нет
Всего: нет



файл не большой, около метра.
т.е. если записать
Код

procedure TForm1.Execute;
var
  temp: Tstringlist;
begin
...
 temp: TstringList.create;
 temp.loadfromfile('test.txt');
...

то работать будет нормально?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0727 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.