понедельник, 31 января 2011 г.

Введение в обобщенное программирование (Generics) - 2


Стек на основе обобщений (generics)

Итак, начнем создавать стек, основанный на обобщении (generics).
В название класса, добавим параметр типа, заключив его в “<”,”>”
                        
 type

   TGenericStack<T> = class

зарезервированный тип T может быть помещен в те-же самые места, как и любой стандартный тип Delphi: в конструктор, в методы класса, или в параметры функций.

type

 TGenericStack<T> = class

    genArray: Array of T;

    TopOfStack : Integer;

    constructor Create(length: Integer);

    procedure push(Value: T);

    function pop: T;

 end;

Введение в обобщенное программирование (Generics) - 1


Данная статья выполнена на основе материалов подготовленных Felix John COLIBRI и является переводом, выполненным мной с учетом небольших дополнений и разъяснений.
Обобщённое программирование — это парадигма программирования, заключающаяся в таком описании данных и алгоритмов, которое можно применять к различным типам данных, не меняя само это описание.
В Delphi обобщенное программирование представлено в виде новой конструкции языка – обобщении (generics).

среда, 26 января 2011 г.

Использование OmniThread Libray 2.0 (OTL 2.0) для создания многопоточных приложений - 6


Провайдер исходных данных

В данном разделе мы остановимся более подробно на провайдере исходных данных или исходном провайдере.
Как мы знаем, провайдер является поставщиком данных для передачи значений в локальную очередь (цикл), в котором данное значение далее передается в параллельные задачи.

вторник, 25 января 2011 г.

Фильм...фильм...фильм или как я искал описания фильмов


Добрый день коллеги.

Сегодня мы отвлечемся немного от OTL и поговорим о духовном – поговорим о кино, вернее о сайте kinopoisk.ru и поиске описаний фильмов. К сожалению кинопоиск не предполагает никого API для поиска и получения информации о фильмах и что сразу приходит на ум это парсирование страниц и вытаскивание из них нужной нам информации, что возможно но довольно таки трудоемко.

пятница, 14 января 2011 г.

Использование OmniThread Libray 2.0 (OTL 2.0) для создания многопоточных приложений - 5

Продолжение, начало в http://deeptown12.blogspot.com/2011/01/omnithread-libray-20-otl-20-4.html

Регулировка стадий


В нашем демонстрационном примере (41_Pipeline) большое количество данных (один миллион чисел) передаются через многоступенчатый процесс. Если один поток будет приостановлен в течение некоторого времени или поток будет выполнять вычисление, по времени медленнее чем время вычисления предыдущего потока то может возникнуть ситуация когда входная очередь этого потока может заполниться данными под которые будет выделено слишком много памяти, которую в свою очередь позже нужно будет освобождать. Для таких случаев для более правильной регулировки выделения памяти трубопровод использует новые возможности блокирующей коллекции, появившиеся в версии 2.0.

четверг, 13 января 2011 г.

Использование OmniThread Libray 2.0 (OTL 2.0) для создания многопоточных приложений - 4

Многоступенчатые процессы


Модуль OtlParallel в OmniThreadLibrary предлагает некоторые решения высокого уровня, которые позволяют Вам легко управлять некоторыми видами процессов параллельно. До некоторых пор OTL предоставляло только фоновые вычисления (Parallel.Future), независимые параллельные процессы (Parallel.Join) и параллельные циклы, где фоновая задача, выполняющаяся в данном цикле, зависела только от значения цикла, а не от вычислений, сделанных в других фоновых задачах Parallel.ForEach. К сожалению, многие параллельные процессы не подпадают ни под одну из этих категорий.

среда, 12 января 2011 г.

Использование OmniThread Libray 2.0 (OTL 2.0) для создания многопоточных приложений - 3. Волшебство Parallel.ForEach. Краткий обзор.

В этой части мы рассмотрим внутренний механизм работы параллельного цикла Parallel.ForEach. Вам может казаться, что понимание внутреннего механизма параллельного цикла при создании программ вам не к чему, однако автор приводит несколько доводов для того что бы вы более глубоко вникли в этот механизм.

понедельник, 10 января 2011 г.