Others have complained about its performance, but my tests seem to show it's at least decent. Most signals either have no slots, or very few slots connected.
Signals2 explicitly supports simultaneous access from different threads to objects of type boost:: In other words, not lock-free. Thinking about how to best reach these goals, I decided to use an implementation which guarantees a wait-free singly linked list geant casino davezieux 07 drive read operations.
Emitting should be as fast as possible. To avoid having the boost signal slot thread safe threads interrupt each other while writing to standard output, a mutex is used to synchronize access to std:: It seems like slots usually can be evaluated asynchronously, but they could be strongly ordered, too.
The type equivalent to boost:: This is CC0 licensed public domain. Supposedly decently quick, but not thread safe.
My implementation likely will have O n group insertion. Licensed under the Boost Liscense. However, it skimps on features I think it offers similar features to Qt's implementation.
Not thread safe, performance wasn't great, now deprecated in favor of Boost Signals2. Probably one of the fastest implementations I have seen, but is not thread-safe.
Perform all necessary list modification operations. There are some semantic changes notably the interface for combiners is differentand I was unable to capture the O log n performance of inserting group-ordered slots.
For example, objects of type boost:: Signals2 provides an empty mutex implementation called boost:: The solution I came up with means the iterator object encapsulated all boost signal slot thread safe internally, in particular if it is the end node.
There's not really much good reason for doing so other than code bloat issues with Visual Studio. Signals2 offers a simpler way to disable synchronization than passing the complete list of parameters.
Eventually, I ended up with the following: These libraries are being used because currently the compiler I'm using doesn't have the standard variants implemented Mingw w64 gcc For the most part, I was able to implement or actually, can see a straight-forward implementation nearly all of the features provided by Boost Signals2. Also licensed under LGPL.
Multithreading Almost all classes provided by Boost. The slot being benchmarked: In addition to this the implementation wasn't type-safe a.