All three do intra-process communications and are a means of doing zero-cost transfer of data between threads in a process.

Sigslots and Nodelets

We were using ecl sigslots before ros came out, and then when ros came out, it gave us a fast means of doing quick communication between ros library packages that had been bundled together into a ros application package.

When nodelets came out, with a very similar syntax (connections via topics identified by strings), we could almost immediately drop out alot of our sigslots for nodelets.

The nodelets impose extra structure though, and sigslots can be convenient still in some cases.

Non Ros Programs

Ecl packages have no dependency on any ros libraries, they just utilise the ros build environment. Similarly, we often do this to create non-ros programs, especially cross-compiled embedded programs. The very low overhead of ecl_sigslots is advantageous in this regard - much lower than boost, qt or a ros.

Hiding Communications from Ros

Sometimes its convenient to hook up sigslots in a single multi-threaded package where you don't want to expose extra topics needlessly.

Comms in a Single Application

Also, ecl sigslots don't impose the const'ness of the data being transferred (in most cases const imposition is a good thing - a library should never use non-const data references because they then can't control/guarantee behaviour for the users of their library). However inside a single multi-threaded application where control is guaranteed, this can be ok, and it provides a convenient way to pass references to shared data around the application. If you can find another way to do this though, it is to be encouraged - you need to take special care to avoid multi-threaded bugs.


(I haven't used this yet, so the information below may be slightly innacurate - will update once we've road tested it).

This is a new project at willow for intra-process communications that adds a framework for scheduling and synchronisation. This avoids the completely asynchronous nature of sigslots and ros comms which should be very beneficial in alot of control applications.


Disregarding the other sigslot style implementations for the reasons discussed here.

Wiki: ecl_sigslots/Comparisons (last edited 2012-01-28 08:38:37 by DanielStonier)