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.
Thanks for this amazing library. We love it here.
ReplyDeleteThank you, that's good to hear. :)
DeleteOne of the big reasons for using Delphi! Awesome work ;-) thanks :-)
ReplyDeleteThank you very much!
ReplyDeleteAny example of using new BackgroundWorker.StopOn function? Any idea of what it was supposed to be used for?
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 :)
DeleteNot OnStop (I think I understand what it doing), but StopOn function :)
DeleteThis comment has been removed by the author.
ReplyDelete