Re: Clarification on Glib Thread-Safe Operation
- From: Owen Taylor <otaylor redhat com>
- To: David Judkovics <djudkovi us ibm com>
- Cc: gtk-list gnome org
- Subject: Re: Clarification on Glib Thread-Safe Operation
- Date: Thu, 02 Oct 2003 15:03:45 -0400
On Thu, 2003-10-02 at 10:43, David Judkovics wrote:
> My project makes extensive use of what I believe are glibs non thread
> related functions and types. The wording of the documentation
> concerning glib thread safe operation has left me confused.
> The documentation states glib must be compiled with the macro
> 'G_THREADS_ENABLED' defined for thread safe operation.
> ..."This macro is defined, if GLib was compiled with thread support.
> This does not necessarily mean, that there is a thread implementation
> available, but the infrastructure is in place and once you provide a
> thread implementation to g_thread_init(), GLib will be multi-thread
> safe. It isn't and cannot be, if G_THREADS_ENABLED is not defined."...
Not that all that G_THREAD_ENABLED being defined means is that
you didn't pass
to GLib's configure. Thread support is the default.
> Later on the documentation for 'g_thread_init()' states,
> ..."Before you use a thread related function in GLib, you should
> initialize the thread system. This is done by calling g_thread_init().
> Most of the time you will only have to call g_thread_init(NULL)."...
> To me thread safe operation and the use of glib thread related
> functions are two distinct configuration issues. The documentation
> seems to mix them.
> This is my confusion.
How do you think GLib achieves thread-safe operation? It uses the
glib thread related functions.
> My project is a library that uses the 'g_slist_' calls extensively,
> calls I believe that are not thread related. My project library must
> be thread safe. The version of glib we are using does not have
> 'G_THREADS_ENABLED' defined. Is my project library thread safe within
> the context of its use of glib's 'g_slist_' calls?
> Put another way, is glibs 'g_slist_' calls thread safe without
> 'G_THREADS_ENABLED' defined?
If you disabled thread support when compiling GLib, you
cannot use it from a threaded application.
] [Thread Prev