[sigc] interthread communication library "sigx++" (crossposting)
- From: klaus triendl <klaus triendl eu>
- To: gtkmm-list gnome org, libsigc-list gnome org
- Subject: [sigc] interthread communication library "sigx++" (crossposting)
- Date: Sun, 13 Apr 2008 20:40:22 +0200
I would like to announce my work on "sigx++", a c++ interthread
communication library on top of libsigc++ and glibmm.
It features:
* dispatcher based interthread communication
* typesafe functor adaptors to execute functions in the context of
another thread (send messages inbetween threads)
* threadsafe wrappers for signals and connections
* deadlock detection for synchronous messages
* ready-to-use with glibmm/gtkmm based programs
More specifically:
* every variant of interthread communication is done via a dispatcher
under the hood;
This means that communication except for the dispatcher and synchronous
messages is lock-free;
instead of making functors, signals and connections threadsafe by
themselves they rather have wrappers that offer the same interface and
send a message to the concrete signal or connection in the context of
another thread (i.e. to the thread that owns the signals).
* the dispatcher mechanism itself is generic such that multiple
dispatcher implementations can be plugged in
* e.g. sigx++ out of the box extends the Glib::Dispatcher in a way
that not only nullary callbacks can be executed but callbacks with an
arbitrary number of arguments
* for sending messages between threads, there exists a "tunnel"
functor adaptor adapting functions to be executed in the context of
another thread
* sigx++ introduces a "dispatchable" concept, i.e. a class that just
can be part of interthread communication
* sigx++ introduces a "threadable" concept, i.e. a class executed as
a thread
* glibmm based implementations of dispatchable/threadable that create
and set up a glibmm thread context allow sigx++ to be used directly
within gtkmm programs
sigx++ started from ideas of Tim Mayberry's project "glibmmx" and some
discussions with him helped me to bring sigx++ to its current level.
I personally consider sigx++ as completed regarding its functionality
except the support for system signals; still some work needs to be done
though.
If you are interested in the library you can download it at
http://triendl.info/sigx
The example and test programs should give an impression how sigx++ can
be used.
Questions and comments are welcome and I hope for constructive discussions!
Klaus Triendl
[
Date Prev][Date Next] [
Thread Prev][Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]