Re: Can a Multi-Threaded GTKMM Application Use std::thread Rather Than Glib::Thread?
- From: Chris Gordon-Smith <c gordonsmith gmail com>
- To: Harry van Haaren <harryhaaren gmail com>
- Cc: GTKmm <gtkmm-list gnome org>
- Subject: Re: Can a Multi-Threaded GTKMM Application Use std::thread Rather Than Glib::Thread?
- Date: Sun, 16 Oct 2011 22:04:04 +0100
Thanks. Its really that:-
1) I'm having to increase the amount of my code that is dependent on
non C++ standard code, and...
2) If I want to make more use of multi-threading by parallelising my
simulation code on my 4-core processor, then I'll have to either make
even more code dependent on Glib, or use two different threading systems
within the same application.
On Sun, 2011-10-16 at 20:32 +0100, Harry van Haaren wrote:
> Apologies, for the double...
> The point I'm trying to make w.r.t dependencies is that gtkmm-2.4
> depends on glib-2.0, so I don't think you can remove the dependency on
> Indeed you don't *manually* include <glib.h> or <glibmm.h>, but the
> underlying library is used by the rest of gtkmm, so you effectively
> have nothing to gain by not including it... (As far as I understand
> On Sun, Oct 16, 2011 at 8:29 PM, Harry van Haaren
> <harryhaaren gmail com> wrote:
> Ah ok, yes I get you now.
> Unfortunatly pkg-config tells me this:
> pkg-config --libs gtkmm-2.4
> -pthread -lgtkmm-2.4 -latkmm-1.6 -lgdkmm-2.4 -lgiomm-2.4
> -lpangomm-1.4 -lgtk-x11-2.0 -lglibmm-2.4 -lcairomm-1.0
> -lsigc-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0
> -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lpango-1.0
> -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0
> -lgthread-2.0 -lrt -lglib-2.0
> So there's quite some deps for 2.4, I don't know if gtkmm-3
> has less dependencies (I haven't switched yet) but I doubt it
> somehow. The reason that all threading / OS specific stuff is
> abstracted & "generic"-ized across platforms is so that the
> same source will compile cross platfrom... you're probably
> well aware of this.
> That means that if your using GTK, your going to need the GTK
> subsystem for files, threads, X, name it... because some of
> them are platform specific, I don't know is it possible to use
> the generic C++11 or C++0x threads as a *replacement*,
> although I'm sure you can use them as an *alternative*.
> I'm not a gtkmm-dev, so I'm in over my head a little here...
> Perhaps some of the veterans of this list would like to shed
> some light on if its practical to do what the OP mentions...
> I'll be keeping an eye on the thread for my own learning... :)
> On Sun, Oct 16, 2011 at 7:44 PM, Chris Gordon-Smith
> <c gordonsmith gmail com> wrote:
> Hello Harry
> Thanks for the response.
> What I want to do is minimise the dependencies that my
> code has on
> various libraries other than the C++ standard library.
> Since the C++ standard library does not include a GUI,
> I use GTKMM,
> which I'm very happy with. I have separated out my GUI
> presentation code
> from the rest of the code, and only the GUI
> presentation code has to
> include <gtkmm.h>. But to get the multithreading for
> the GUI working, I
> have now had to introduce a dependency on Glib
> <glibmm.h> in other parts
> of my code. I have used wrapper classes to limit the
> scope of the
> dependency to a small section of code, but I would
> have preferred not to
> do this at all.
> My question is: Could I have avoided use of
> Glib::Thread altogether, and
> just used std::thread?
> I think probably not, but thought I would ask.
> Chris Gordon-Smith
> On Sun, 2011-10-16 at 17:44 +0100, Harry van Haaren
> > Hi Chris,
> > From experience: Of course it is, if you 1. mutex
> critical sections
> > or 2. lock-free ringbuffer all events between the
> threads, there's
> > no reason you can't use 2 (or more) different
> "types" of threads in
> > one app.
> > From a practical point of view, why would you?
> Glib::Thread should
> > suffice for simulator / GUI separation...
> > Perhaps I'm not following your use-case, or maybe
> you want to play
> > with the latest-and-greatest, I don't know.
> > I know there's some convenience things around
> std::thread that you
> > might want for ease of use.. but I've always
> > coded those myself..
> > -Harry
> > On Sun, Oct 16, 2011 at 4:28 PM, Chris Gordon-Smith
> > <c gordonsmith gmail com> wrote:
> > Hello All
> > I have recently introduced multi-threading
> into my artificial
> > chemistry
> > simulator, so that the GUI can be active
> while the simulation
> > is
> > running.
> > To do this, I've used Glib::Thread. Now that
> C++11 provides
> > threading
> > with std::thread, I would prefer to use
> that. Is it possible
> > to use
> > std::thread so that I have one thread for my
> GTKMM GUI, and
> > one (or
> > more) for my simulation processing?
> > Chris Gordon-Smith
> > www.simsoup.info
> > gtkmm-list mailing list
> > gtkmm-list gnome org
] [Thread Prev