interthread communication library "sigx++" (crossposting)

View: New views
20 Messages — Rating Filter:   Alert me  
< Prev | 1 - 2 | Next >

interthread communication library "sigx++" (crossposting)

by klaus triendl-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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

_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: interthread communication library "sigx++" (crossposting)

by milosz derezynski :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I've built a Debian Package for Hardy Heron of sigx, it's available here: http://futurepast.free.fr/debian/

Cheers
Milosz

2008/4/13 klaus triendl <klaus@...>:
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

_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list


_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: interthread communication library "sigx++" (crossposting)

by klaus triendl-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Milosz Derezynski schrieb:
> Hello,
>
> I've built a Debian Package for Hardy Heron of sigx, it's available
> here: http://futurepast.free.fr/debian/
>
> Cheers
> Milosz

Hi Milosz,

wow, that's interesting news!
Did you or anybody take a look at it already?

What I still like to do is to acknowledge Andreas Rottmann for his work
on libsigcx which I used before, giving me some ideas for sigx++. Would
be nice to hear something from you, Andreas...


To all:
Sorry, I did the crossposting wrong (no follow-up), so I'm writing to
both newsgroups...


--
Klaus
_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: interthread communication library "sigx++" (crossposting)

by Murray Cumming :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Thu, 2008-05-01 at 21:18 +0200, Milosz Derezynski wrote:
> Hello,
>
> I've built a Debian Package for Hardy Heron of sigx, it's available
> here: http://futurepast.free.fr/debian/

Thanks.

Please do open an Ubuntu bug about it, so it can go into the official
repository.

--
murrayc@...
www.murrayc.com
www.openismus.com

_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: interthread communication library "sigx++" (crossposting)

by milosz derezynski :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hey Klaus,

Yes i've started using it in our new project MPX: http://mpx.backtrace.info; the library is really great, i'd like to thank you very much for making this available to everyone!

Cheers
Milosz

2008/5/1 klaus triendl <klaus@...>:
Milosz Derezynski schrieb:
> Hello,
>
> I've built a Debian Package for Hardy Heron of sigx, it's available
> here: http://futurepast.free.fr/debian/
>
> Cheers
> Milosz

Hi Milosz,

wow, that's interesting news!
Did you or anybody take a look at it already?

What I still like to do is to acknowledge Andreas Rottmann for his work
on libsigcx which I used before, giving me some ideas for sigx++. Would
be nice to hear something from you, Andreas...


To all:
Sorry, I did the crossposting wrong (no follow-up), so I'm writing to
both newsgroups...


--
Klaus


_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: interthread communication library "sigx++" (crossposting)

by milosz derezynski :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Yes i will, though the packaging still needs a little work, quite a few things that lintian doesn't like yet; the package is allright for installing but Ubuntu most likely won't accept it without fixing these. I'll check it tomorrow.

2008/5/1 Murray Cumming <murrayc@...>:
On Thu, 2008-05-01 at 21:18 +0200, Milosz Derezynski wrote:
> Hello,
>
> I've built a Debian Package for Hardy Heron of sigx, it's available
> here: http://futurepast.free.fr/debian/

Thanks.

Please do open an Ubuntu bug about it, so it can go into the official
repository.

--
murrayc@...
www.murrayc.com
www.openismus.com



_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: interthread communication library "sigx++" (crossposting)

by milosz derezynski :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hmm i already have the first question; going by the example and docs i've created a class derived from glib::threadable, and connect to it in a glib_auto_dispatchable derived class.

However, on startup i get:

terminate called after throwing an instance of 'sigx::bad_dispatcher'
  what():  dispatcher pointer is invalid, message can't be dispatched
Aborted


What could be the problem? I can't see anything wrong (doesn't mean it's there, but i can't find it..)

Thanks
Milosz

2008/5/1 klaus triendl <klaus@...>:
Milosz Derezynski schrieb:
> Hello,
>
> I've built a Debian Package for Hardy Heron of sigx, it's available
> here: http://futurepast.free.fr/debian/
>
> Cheers
> Milosz

Hi Milosz,

wow, that's interesting news!
Did you or anybody take a look at it already?

What I still like to do is to acknowledge Andreas Rottmann for his work
on libsigcx which I used before, giving me some ideas for sigx++. Would
be nice to hear something from you, Andreas...


To all:
Sorry, I did the crossposting wrong (no follow-up), so I'm writing to
both newsgroups...


--
Klaus


_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: interthread communication library "sigx++" (crossposting)

by milosz derezynski :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I've only forgot to run the thread; sorry for much ado..

2008/5/1 Milosz Derezynski <internalerror@...>:
Hmm i already have the first question; going by the example and docs i've created a class derived from glib::threadable, and connect to it in a glib_auto_dispatchable derived class.

However, on startup i get:

terminate called after throwing an instance of 'sigx::bad_dispatcher'
  what():  dispatcher pointer is invalid, message can't be dispatched
Aborted


What could be the problem? I can't see anything wrong (doesn't mean it's there, but i can't find it..)

Thanks
Milosz

2008/5/1 klaus triendl <klaus@...>:

Milosz Derezynski schrieb:
> Hello,
>
> I've built a Debian Package for Hardy Heron of sigx, it's available
> here: http://futurepast.free.fr/debian/
>
> Cheers
> Milosz

Hi Milosz,

wow, that's interesting news!
Did you or anybody take a look at it already?

What I still like to do is to acknowledge Andreas Rottmann for his work
on libsigcx which I used before, giving me some ideas for sigx++. Would
be nice to hear something from you, Andreas...


To all:
Sorry, I did the crossposting wrong (no follow-up), so I'm writing to
both newsgroups...


--
Klaus



_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: interthread communication library "sigx++" (crossposting)

by Deng Xiyue-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

在 2008-05-01四的 23:35 +0200,Milosz Derezynski写道:
> Yes i will, though the packaging still needs a little work, quite a
> few things that lintian doesn't like yet; the package is allright for
> installing but Ubuntu most likely won't accept it without fixing
> these. I'll check it tomorrow.
>

Or you can prepare it for Debian and let Ubuntu sync with it, so both
Debian and Ubuntu will have it.  I'll do it if I find some time.

> 2008/5/1 Murray Cumming <murrayc@...>:
>         On Thu, 2008-05-01 at 21:18 +0200, Milosz Derezynski wrote:
>         > Hello,
>         >
>         > I've built a Debian Package for Hardy Heron of sigx, it's
>         available
>         > here: http://futurepast.free.fr/debian/
>        
>        
>         Thanks.
>        
>         Please do open an Ubuntu bug about it, so it can go into the
>         official
>         repository.
>        
>         --
>         murrayc@...
>         www.murrayc.com
>         www.openismus.com
>        
>
> _______________________________________________
> gtkmm-list mailing list
> gtkmm-list@...
> http://mail.gnome.org/mailman/listinfo/gtkmm-list
--
Regards,
Deng Xiyue, a.k.a. manphiz


_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: interthread communication library "sigx++" (crossposting)

by milosz derezynski :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hey Klaus,

We're now really looking at packaging sigx, and we found a few problems with the source package and have also a few requests:

- dispatchables.cpp and tunnel_validity_tracker.cpp are missing an include of <glib/gtestutils.h>
- There is no way to specify an own compiler with the build system; one fried of mine has problems building it with g++ 4.2.1, he's installed 4.3 but has no way to point the build to it
- A link to an SCM repository of sigx would be really nice

OK, it's a little lot at one time but you've gained some popularity here among a group of my friends because the library really rocks! It would be nice if you could fix the above problems, if you have the time.

Thanks
Milosz

2008/5/1 klaus triendl <klaus@...>:
Milosz Derezynski schrieb:
> Hello,
>
> I've built a Debian Package for Hardy Heron of sigx, it's available
> here: http://futurepast.free.fr/debian/
>
> Cheers
> Milosz

Hi Milosz,

wow, that's interesting news!
Did you or anybody take a look at it already?

What I still like to do is to acknowledge Andreas Rottmann for his work
on libsigcx which I used before, giving me some ideas for sigx++. Would
be nice to hear something from you, Andreas...


To all:
Sorry, I did the crossposting wrong (no follow-up), so I'm writing to
both newsgroups...


--
Klaus


_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Parent Message unknown Re: Re: interthread communication library "sigx++" (crossposting)

by klaus triendl-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hey Milosz,

> We're now really looking at packaging sigx, and we found a few problems with
> the source package and have also a few requests:

Before you officially package it I still want to change the open_tunnel() API - in case you didn't need it yet it's because sigx++ does it normally under the hood. But it belongs to the public API and it's not good to change it later as I don't want to change the major version already at the very beginning. It would be great if you could help me to find a naming for those taking an explicit dispatchable.

> - dispatchables.cpp and tunnel_validity_tracker.cpp are missing an include
> of <glib/gtestutils.h>

Well, the assertion facilities moved from gmessages.h to gtestutils.h as I've just found out. The question is how to fix this - do you need backward compatibility or should sigx++ depend on glib-2.16?

> - There is no way to specify an own compiler with the build system; one
> fried of mine has problems building it with g++ 4.2.1, he's installed 4.3
> but has no way to point the build to it

I'll include this possibility.

> - A link to an SCM repository of sigx would be really nice

I know, I'm missing a SCM, too. I'm thinking about sourceforge.net, berlios.de or google - do you have a good suggestion?


> OK, it's a little lot at one time but you've gained some popularity here
> among a group of my friends because the library really rocks! It would be
> nice if you could fix the above problems, if you have the time.

Thanks for your appreciation! I will fix those things as soon as possible as I'm interested to have the library up and running, too.


--
Klaus
_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: Re: interthread communication library "sigx++" (crossposting)

by Murray Cumming :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sat, 2008-05-03 at 10:28 +0200, klaus triendl wrote:
> > - There is no way to specify an own compiler with the build system;
> one
> > fried of mine has problems building it with g++ 4.2.1, he's
> installed 4.3
> > but has no way to point the build to it
>
> I'll include this possibility.

Does it use some strange build system?

--
murrayc@...
www.murrayc.com
www.openismus.com

_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Parent Message unknown Re: Re: Re: interthread communication library "sigx++" (crossposting)

by klaus triendl-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> On Sat, 2008-05-03 at 10:28 +0200, klaus triendl wrote:
> > > - There is no way to specify an own compiler with the build system;
> > one
> > > fried of mine has problems building it with g++ 4.2.1, he's
> > installed 4.3
> > > but has no way to point the build to it
> >
> > I'll include this possibility.
>
> Does it use some strange build system?

It uses scons.
The docs say that scons knows how to search for available programming tools by default. But it's no problem to make the build script use the CC and CXX environment variables if set.


--
Klaus
_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: Re: interthread communication library "sigx++" (crossposting)

by milosz derezynski :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hey Klaus,


Before you officially package it I still want to change the open_tunnel() API - in case you didn't need it yet it's because sigx++ does it normally under the hood. But it belongs to the public API and it's not good to change it later as I don't want to change the major version already at the very beginning. It would be great if you could help me to find a naming for those taking an explicit dispatchable.

Ok, and as soon as a name strucks me i'll post it to the list, i haven't thought about it yet (maybe someone else has?)
 
Well, the assertion facilities moved from gmessages.h to gtestutils.h as I've just found out. The question is how to fix this - do you need backward compatibility or should sigx++ depend on glib-2.16?

Personally i think backwards compatibility could be good; looks like a bad move from glib's side to change this.
 

> - There is no way to specify an own compiler with the build system; one
> fried of mine has problems building it with g++ 4.2.1, he's installed 4.3
> but has no way to point the build to it

I'll include this possibility.

Thanks
 


> - A link to an SCM repository of sigx would be really nice

I know, I'm missing a SCM, too. I'm thinking about sourceforge.net, berlios.de or google - do you have a good suggestion?

We had bad experiences with berlios in the past (server downtimes for long time), SourceForge can be problematic too but it's proven, i think google code is very reliable (having past experiences with berlios and sourceforge i'd just choose Google Code these days).



> OK, it's a little lot at one time but you've gained some popularity here
> among a group of my friends because the library really rocks! It would be
> nice if you could fix the above problems, if you have the time.

Thanks for your appreciation! I will fix those things as soon as possible as I'm interested to have the library up and running, too.


--
Klaus


_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: Re: interthread communication library "sigx++" (crossposting)

by Jonathon Jongsma-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sat, 2008-05-03 at 10:28 +0200, klaus triendl wrote:
> > - A link to an SCM repository of sigx would be really nice
>
> I know, I'm missing a SCM, too. I'm thinking about sourceforge.net, berlios.de or google - do you have a good suggestion?

Frankly, I would suggest something like github.com for a new project
these days.  But that's just a source code repository.  it doesn't offer
bug tracking or anything like that.  So if you want a fully integrated
solution, google code is probably your best bet.

--
Jonner

_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: [sigc] interthread communication library "sigx++" (crossposting)

by Murray Cumming :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sat, 2008-05-03 at 15:08 +0200, Milosz Derezynski wrote:
>
>         Well, the assertion facilities moved from gmessages.h to
>         gtestutils.h as I've just found out. The question is how to
>         fix this - do you need backward compatibility or should sigx++
>         depend on glib-2.16?

Apparently you are not meant to include either header directly, but
should use glib.h. I'm not a big fan of that or of the change, but
enough people have complained in the right places already without
success.

> Personally i think backwards compatibility could be good; looks like a
> bad move from glib's side to change this.


--
murrayc@...
www.murrayc.com
www.openismus.com

_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: [sigc] interthread communication library "sigx++" (crossposting)

by klaus triendl-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Murray Cumming schrieb:

> On Sat, 2008-05-03 at 15:08 +0200, Milosz Derezynski wrote:
>>         Well, the assertion facilities moved from gmessages.h to
>>         gtestutils.h as I've just found out. The question is how to
>>         fix this - do you need backward compatibility or should sigx++
>>         depend on glib-2.16?
>
> Apparently you are not meant to include either header directly, but
> should use glib.h. I'm not a big fan of that or of the change, but
> enough people have complained in the right places already without
> success.

I'm not a big fan either but as it only affects cpp files, including
glib.h is a viable solution.


--
Klaus
_______________________________________________
gtkmm-list mailing list
gtkmm-list@...
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Re: interthread communication library "sigx++" (crossposting)

by klaus triendl-4 :: Rate this Message: