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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2013, 15:05   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию Запись на ЖД из MemoryStream в многопоточном приложении

Добрый день. Есть программа, которая:
- получает список УРЛ изображений
- загружает изображения в MemoryStream (загрузчик ИНДИ)
- записывает в указанный каталог картинки с их именами и расширениями(жпег, жиф, пнг)
методом FStream.SaveToFile('Pic/'+Name+Ftype) прямо из процедуры загрузки картинки

в однопоточном режиме(без использования Tthread) все работает как нужно.
сейчас надо перевести загрузку картинок в многопоточный режим(10 потоков одновременно)

Вопрос:
- будут ли проблемы при асинхронном обращении к диску для записи файла из нескольких потоков одновременно?
- если будут то какие способы нужно использовать что проблем не было?
- Синхронайз или там КС вроде как для другого предназначены?
Pcrepair вне форума Ответить с цитированием
Старый 25.08.2013, 15:12   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

никаких проблем, пока в один и тот же файл из разных потоков не полезешь
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 25.08.2013, 15:26   #3
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию

то есть какието спецмеры типа синхронайз(при обращении к форме из потока) или КС (при обращении к переменным из потока) не нужны?
Pcrepair вне форума Ответить с цитированием
Старый 25.08.2013, 18:37   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

При обращении в VCL (в вашем случае к форме) по любому нужна синхронизация.
FaTaL вне форума Ответить с цитированием
Старый 25.08.2013, 19:13   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А что даст многопоточная запись изображений на диск? По времени выигрыша точно не будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.08.2013, 01:04   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Запись на ЖД из MemoryStream в многопоточном приложении
MemoryStream для этого не предназначен. Для прямой записи в файл существует TFileStream, вот его и используйте.
Человек_Борща вне форума Ответить с цитированием
Старый 26.08.2013, 01:50   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А что даст многопоточная запись изображений на диск? По времени выигрыша точно не будет
Скорее даже наоборот. Позиционирование записывающих головок самая медленная операция.
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Indy и поток MemoryStream udaf Работа с сетью в Delphi 0 07.12.2009 08:54
Проблема с Graphic и MemoryStream andrey4623 Мультимедиа в Delphi 10 16.07.2009 22:11
Поиск в MemoryStream... Hottabych Общие вопросы Delphi 6 17.02.2009 20:37
Проблема немодального диалога в многопоточном приложении (Visual С++ 6 MFC Win32) Kernel_BuG Помощь студентам 1 26.09.2008 09:59
TBitmap в многопоточном приложении Sergey_nl Мультимедиа в Delphi 3 09.07.2007 00:34