Re: gthreads vs pthread



On Tue, 26 Oct 2010 22:41:44 +0000
Juan Pablo L. <jpablolorenzetti hotmail com> wrote:
Hello, i m using threads in a glib-only project, a service daemon, i
have implemented them using GThreads, but i see now that GThreads is
only a wrapper around pthreads (with the corresponding overhead from
doing so) and does not provide any additional benefit (if i dont
mistake the only real benefit is the cross platform feature).
[snip]

I doubt very much you will notice any difference.  Compared to the
overhead of starting new threads and potential contention on mutexes,
wrapping costs are likely to be negligible.  There is a case for using
pthread directly if you are using your own wrappers for automatic
lifetime management and exception safety in, say, C++, or if you want
to use thread cancellation, or the small number of other features
supported by pthread but not by GThreads.

1. if i dont issue the g_thread_init, at the beginning of my
application, will there be any problem in glib itself? some functions
or functionality willl cease to work or work incorrectly ?

You must call g_thread_init() if more than one thread might call glib
functions in order to make glib thread safe.  So call g_thread_init() in
a multi-threaded program.

2. Can i
just use Glib with pthread instead of GThread ? i know that the main
loop and GAsyncQueue will work out of the box.

Yes, provided you have called g_thread_init().

3. The documentation
says that by issuing g_thread_init Glib will become thread safe, i
dont understand this, if i dont issue the command Glib will not work
in a multithreated environment ?

It won't, no.  See above.

4. If in the future i use glib in
another project and decided to use pthread in my code but i know GTK
uses GThread inside, will this be a problem? will it be overhead
because i would be using pthreads and GThread together ?

No.  As you have already deduced, GThread is a wrapper for pthread in
unix-like environments.

Chris





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]