На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Использование TThread , Можно ли использовать TThread для создания и добавления объекта в список
    Цитата Pavia @
    Если у каждого потока будет своя корпия данных, то никаких конфликтов соответственно не будет. Но я бы данные удалил из списка. И только после этого снял Lock.

    Вот я примерно к этому и прихожу. Пока придумал такую схему:
    - в потоке ридера будет два TThreadList - один для пустых кадров, один для заполненных
    - будет две public процедуры
    - в одной ищется кадр с нужным таймстемпом, он удаляется из листа заполненых кадров и отдаётся в основной поток. Всё, кадр недоступен для потока ридера, конфликты невозможны.
    - вторая процедура будет возвращать отработанный кадр в лист пустых кадров
    - в потоке ридера в основном цикле будет проверяться - "lock" есть ли кадры в листе пустых кадров, если есть, то пустой кадр забирается из листа пустых кадров "unlock" -> заполняется полученный пустой кадр -> "lock" -> кадр добавляется в лист заполненных кадров -> "unlock".

    Цитата Pavia @
    А она потока безопасна?

    Вроде обещают, что да.

    Цитата Pavia @
    Вам придётся в каждом публичном методе сделать синхронизацию, а именно вставить критическую секцию.

    Ну да. То есть в первой процедуре будет "lock - unlock" листа заполненных кадров, во второй - "lock unlock" листа пустых кадров. Пока не вижу - где здесь может возникнуть дидлок.
      Цитата Pavia @
      с вероятностью 90% вам в любом случае придётся писать свой менеджер памяти

      Очень спорно. Если все кадры одинакового размера, то массив preallocated буферов и простейшая обертка над ним, предоставляющая интерфейс очереди, и никакого менеджера не нужно.
      Цитата Pavia @
      Лучше просто раскидать не по потокам, а по процессам.

      Очень-очень спорно. Больше с IPC запаришься.

      Добавлено
      Цитата An_private @
      Иди лучше всё-таки при запросе кадра копировать его в новый буфер и отдавать этот буфер основной программе, а программа уже сама его очистит когда не надо? Тут я просто боюсь проблемы фрагментации памяти - каждый кадр будет примерно по 4 МБ и 25 раз в секунду просить от системы по 4МБ и тут же их отдавать - не будет ли проблем.

      Я правильно понял - задача потока фреймсервера только и состоит, что в асинхронном чтении файла и выдаче нужного кадра по запросу главного потока? В таком случае никаких сложностей, фреймсервер просто возвращает ссылку на свой буфер, возможно даже синхронно, т.е. ждет, пока главный поток не отпустит кадр. Все равно же ему в это время не надо ничего делать. Соответственно крит. секция одна на фреймсервер, ну или можно заменить на event по желанию.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0230 ]   [ 16 queries used ]   [ Generated: 24.04.24, 03:41 GMT ]