As promised, I’m releasing OmniThreadLibrary with 64-bit support today!
If you’ll be using it in production, wait until Tuesday as I won’t be fixing any bugs over the weekend and on the Monday there is a public holiday here in Slovenia.
- Support for 64-bit platform. Great thanks to [GJ] for doing most of the work!
- Implemented background worker abstraction, Parallel.BackgroundWorker.
- Implemented Atomic<T> class for lock-free initialization of interfaces and objects.
Implemented Locked<T> class for locking initialization of practically anything. [read more, more, more and more]
- TOmniValue.AsInteger, AsString and AsWideString now work if the TOmniValue contains a Variant of the apropriate type.
- TOmniValue can store arrays, hashes and records. [read more]
- Added a class which can wrap any record - TOmniRecordWrapper<T>.
- Added an interface which can wrap any object and destroy it when the interface goes out of scope - IOmniAutoDestroyObject.
- Fixed bugs in TOmniInterfaceDictionary which caused scheduled tasks not to be destroyed until the program was terminated. Great thanks to [Zarko] for providing a reproducible test case.
- Fixed race condition between TOmniTask.Execute and TOmniTask.Terminate.
- Under some circumstances ProcessMessage failed to rebuild handle array before waiting which could cause 'invalid handle' error.
- Fixed wrong order in teardown sequence in TOmniTask.Execute which could cause access violation crash. Great thanks to [Anton Alisov] for providing a reproducible test case.
- Fixed invalid "A call to an OS function failed" error in DispatchEvent.
- TOmniMessageQueue.Enqueue leaked if queue was full and value contained reference counted value (found by [meishier]).
- Number of producers/consumers in TOmniForkJoin<T>.StartWorkerTasks was off by 1 (found by [meishier]).
- 49_FramedWorkers: Multiple frames communication with each own worker task.
- 50_OmniValueArray: Wrapping arrays, hashes and records in TOmniValue.
- 51_PipelineStressTest: Stress test by [Anton Alisov].
- 52_BackgrondWorker: Demo for the new Parallel.BackgroundWorker abstraction.