Hear, hear, OmniThreadLibrary 3.05 has just been released!
What’s new? Not much.
- Added Delphi 10 Seattle packages and projects. OmniThreadLibrary now supports Delphis from 2007 to 10 Seattle.
- Setting IOmniThreadPool.MinWorkers property will start up idle worker threads if total number of threads managed by the thread pool is lower than the new value.
There were, however, many quite important bug fixes. You are strongly advised to update to this version!
Great thanks go to [Zak] who notified me about various TWaitFor problems and helped reproduce them.
- Fixed 'record' type handling in TOmniValue.FromArray<T> and TOmniValue.ToArray<T>.
- Reimplemented support for > 60 worker tasks in the OtlThreadPool unit which was removed from the code in 3.04a by mistake.
- IOmniPipeline.PipelineStage.Input and .Output are now always available immediately after the IOmniPipeline.Run.
- TOmniPipeline.Destroy calls TOmniPipeline.Cancel so a pipeline can be shut down if user forgets to call Input.CompleteAdding.
- When the code was waiting on less than 64 handles and timeout occurred, the TWaitFor.Signalled property was not always empty.
- TWaitFor was not working correctly with more than 64 handles if it was created with the parameter-less constructor.
- TWaitFor.MsgWaitAny now uses RegisterWaitForSingleObject approach when waiting on 64 handles. Previously, MsgWaitForMultipleObjectsEx was called, which can only handle up to 63 handles.
- Fixed pointer arithmetic in DetailedRTTI for 64-bit compilation.
- Fixed: affinity mask in IOmniAffinity was only 32-bit wide on 64-bit platform.
If you have Delphi XE8 or newer, you can install OmniThreadLibrary via GetIt. You will probably have to wait a day or two for packages to be updated.
If you have Delphi XE or newer, you can install OmniThreadLibrary with the Delphinus package manager.