среда, 20 июля 2011 г.

Вышла новая версия OmniThreadLibrary 2.1

Вышла новая версия OmniThreadLibrary 2.1

Скачать ее можно либо тут  либо с официального SVN проекта.

Вкратце, что появилось нового:

Добавлена поддержка исключений в методы Parallel.Future и Parallel.Join. так как эти методы претерпели существенные изменения, существует опасность проблем с ранее написанным кодом. Прежде, чем устанавливать новую версию проверьте history.txt и документацию в OtlParallel.pas для дополнительной информации по совместимости.

Вы также с выходом новой версии получаете полную UML диаграмму классов и методов OTL.

Добавлены новые демонстрационные примеры:
  • 43_InvokeAnonymous: - пример использования метода IOmniTaskControl.Invoke и IOmniTask.Invoke.
    44_Fork-Join QuickSort: - пример реализации быстрой сортировки QuickSort используя Parallel.ForkJoin.
    45_Fork-Join max: Выбор максимального элемента в массиве используя Parallel.ForkJoin.
    46_Async: Демо
    для Parallel.Async.
    47_TaskConfig: Демо для Parallel.TaskConfig.
     

Внесены новые возможности в OTL:
  • Новые возможности управления фоновой задачей сделанные для высокоуровневого метода Parallel.Async 
  • OtlParallel задачи могут быть настроены с Parallel.TaskConfig
подробнее об этом тут

  • Parallel.ForkJoin - инструмент упрощающий разработку разветвления / слияния алгоритмов. Более подробно   я рассмотрю его в следующих постах    
  • Интерфейсы IOmniTask и IOmniTaskControl реализованы в методе Invoke, который можно использовать для асинхронного выполнения блока кода в другом потоке. Более подробно   я рассмотрю его в следующих постах  
  • Методы таймера (Timer) может использовать идентификатор таймера (параметр timerID: TOmniValue). Идентификатор таймера, передаваемые этому параметру, позволит вам расшарить один метод между многими таймерами.
  • Поддержка non-silent исключений была удален вместе с кодом выхода EXIT_EXCEPTION. Все исключения теперь ловятся на уровне IOmniTask (т.е. не обрабатываются в вашем коде) и хранятся в свойстве IOmniTaskControl.FatalException. Вы можете вызвать IOmniTaskControl.DetachException что бы стать собственником этого исключения.
  • Изменена сигнатура для исключений фильтров в OtlHook.FilterException.
  • IOmniTaskControl при прекращении посылает сообщения в очереди сообщений и вызывает соответствующие обработчики OnMessage
Помимо новвоведений, были исправлены следующие ошибки (привожу как есть):
  • Fixed race condition in TOmniTask.Execute. 
  • OtlParallel compiles in Delphi 2009. 
  • Fixed: OTL monitor message window could be used after it was destroyed. 
  • Fixed: Parallel.ForEach was never running on more than Process.Affinity.Count tasks.
    OtlParallel pools are created on the fly – OtlParallel unit can now be used from a DLL.
    [dottor_jeckill] 
  • Fixed: TOmniResourceCount.TryAllocate always returned False. 
  • Fixed: Enumerating over TOmniTaskControlList (for example when using IOmniTaskGroup.SendToAll) leaked one object. 
  • Makes sure timers are called even if there's a constant stream of messages in registered message queues.
    Fixed exception handling in the thread pool. 

Комментариев нет:

Отправить комментарий