Friday, February 17, 2017

OmniThreadLibrary 3.07

New year, new release ;) You can get it as a zipped download, git checkout, via Delphinus, and via GetIt.

For more information on OmniThreadLibrary, go to www.omnithreadlibrary.com.

New features

  • Added function IOmniPipeline.NoThrottle which disables throttling on an entire pipeline or one of its stages.
  • Added function IOmniBlockingCollection.IsFinalized.
  • Added function IOmniBlockingCollection.Count.
  • Added readonly property IOmniThreadPool.NumCores which returns number of cores this pool uses for running tasks. Changing Affinity, ProcessorGroups, or NUMANodes properties may modify this value.
  • Communication subsystem handles ERROR_NOT_ENOUGH_QUOTA (1816) error.
  • Added function IOmniBackgroundWorker.OnStop.
  • Added property IOmniWorkItem.SkipCompletionHandler.
    • If it is set to True when work item is created or during its execution, request handlers for that work item won't be called.
    • If it is set to True in the OnRequestDone_Asy handler, then only OnRequestDone handler won't be called.
  • If ThreadDataFactory.Execute throws an exception, that exception is caught, ignored and ThreadData is set to nil. [issue #88]

Bug fixes

  • Reverted change from 3.06: "Any change to Affinity, ProcessorGroups, or NUMANodes properties will reset the MaxExecuting property."
    • New behaviour is compatible with the pre-3.06 code.
      Initially, MaxExecuting is set to Environment.Process.Affinity.Count. This value can only be changed by the external code, not inside the OtlThreadPool unit.
  • In threadpool, IdleWorkerThreadTimeout_sec and WaitOnTerminate_sec were initialized too late.
  • Fixed TOmniValue.CastTo<TArray<Int64>>. [issue #89]
  • If a future's cancellation token is signalled before the future is even created, the future worker is not started at all. [issue #85]

New demos

  • examples\folder scanner: File scanning example implemented with a Pipeline.

7 comments:

  1. Thanks for this amazing library. We love it here.

    ReplyDelete
    Replies
    1. Thank you, that's good to hear. :)

      Delete
  2. One of the big reasons for using Delphi! Awesome work ;-) thanks :-)

    ReplyDelete
  3. Thank you very much!
    Any example of using new BackgroundWorker.StopOn function? Any idea of what it was supposed to be used for?

    ReplyDelete
    Replies
    1. OnStop was added as a user request and at the moment I don't have a nice example for it. If you need it, you'll find it useful, otherwise just ignore it :)

      Delete
    2. Not OnStop (I think I understand what it doing), but StopOn function :)

      Delete
  4. This comment has been removed by the author.

    ReplyDelete