mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-14 05:16:18 +01:00
thread: call g_enumerable_thread_add via callback
There are no longer any functions defined in gthread-deprecated.c called from gthread.c.
This commit is contained in:
parent
f788a2e5e1
commit
9ca4f14264
@ -220,66 +220,6 @@ g_thread_set_priority (GThread *thread,
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* g_thread_create:
|
|
||||||
* @func: a function to execute in the new thread
|
|
||||||
* @data: an argument to supply to the new thread
|
|
||||||
* @joinable: should this thread be joinable?
|
|
||||||
* @error: return location for error, or %NULL
|
|
||||||
*
|
|
||||||
* This function creates a new thread.
|
|
||||||
*
|
|
||||||
* If @joinable is %TRUE, you can wait for this threads termination
|
|
||||||
* calling g_thread_join(). Otherwise the thread will just disappear
|
|
||||||
* when it terminates.
|
|
||||||
*
|
|
||||||
* The new thread executes the function @func with the argument @data.
|
|
||||||
* If the thread was created successfully, it is returned.
|
|
||||||
*
|
|
||||||
* @error can be %NULL to ignore errors, or non-%NULL to report errors.
|
|
||||||
* The error is set, if and only if the function returns %NULL.
|
|
||||||
*
|
|
||||||
* Returns: the new #GThread on success
|
|
||||||
*
|
|
||||||
* Deprecated:2.32: Use g_thread_new() instead
|
|
||||||
*/
|
|
||||||
GThread *
|
|
||||||
g_thread_create (GThreadFunc func,
|
|
||||||
gpointer data,
|
|
||||||
gboolean joinable,
|
|
||||||
GError **error)
|
|
||||||
{
|
|
||||||
return g_thread_new_internal (NULL, func, data, joinable, 0, TRUE, error);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_thread_create_full:
|
|
||||||
* @func: a function to execute in the new thread.
|
|
||||||
* @data: an argument to supply to the new thread.
|
|
||||||
* @stack_size: a stack size for the new thread.
|
|
||||||
* @joinable: should this thread be joinable?
|
|
||||||
* @bound: ignored
|
|
||||||
* @priority: ignored
|
|
||||||
* @error: return location for error.
|
|
||||||
* @Returns: the new #GThread on success.
|
|
||||||
*
|
|
||||||
* This function creates a new thread.
|
|
||||||
*
|
|
||||||
* Deprecated:2.32: The @bound and @priority arguments are now ignored.
|
|
||||||
* Use g_thread_new() or g_thread_new_full() instead.
|
|
||||||
*/
|
|
||||||
GThread *
|
|
||||||
g_thread_create_full (GThreadFunc func,
|
|
||||||
gpointer data,
|
|
||||||
gulong stack_size,
|
|
||||||
gboolean joinable,
|
|
||||||
gboolean bound,
|
|
||||||
GThreadPriority priority,
|
|
||||||
GError **error)
|
|
||||||
{
|
|
||||||
return g_thread_new_internal (NULL, func, data, joinable, stack_size, TRUE, error);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* g_thread_foreach:
|
* g_thread_foreach:
|
||||||
* @thread_func: function to call for all #GThread structures
|
* @thread_func: function to call for all #GThread structures
|
||||||
@ -355,7 +295,7 @@ g_enumerable_thread_remove (gpointer data)
|
|||||||
|
|
||||||
GPrivate enumerable_thread_private = G_PRIVATE_INIT (g_enumerable_thread_remove);
|
GPrivate enumerable_thread_private = G_PRIVATE_INIT (g_enumerable_thread_remove);
|
||||||
|
|
||||||
void
|
static void
|
||||||
g_enumerable_thread_add (GRealThread *thread)
|
g_enumerable_thread_add (GRealThread *thread)
|
||||||
{
|
{
|
||||||
G_LOCK (g_thread);
|
G_LOCK (g_thread);
|
||||||
@ -365,6 +305,67 @@ g_enumerable_thread_add (GRealThread *thread)
|
|||||||
|
|
||||||
g_private_set (&enumerable_thread_private, thread);
|
g_private_set (&enumerable_thread_private, thread);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* g_thread_create:
|
||||||
|
* @func: a function to execute in the new thread
|
||||||
|
* @data: an argument to supply to the new thread
|
||||||
|
* @joinable: should this thread be joinable?
|
||||||
|
* @error: return location for error, or %NULL
|
||||||
|
*
|
||||||
|
* This function creates a new thread.
|
||||||
|
*
|
||||||
|
* If @joinable is %TRUE, you can wait for this threads termination
|
||||||
|
* calling g_thread_join(). Otherwise the thread will just disappear
|
||||||
|
* when it terminates.
|
||||||
|
*
|
||||||
|
* The new thread executes the function @func with the argument @data.
|
||||||
|
* If the thread was created successfully, it is returned.
|
||||||
|
*
|
||||||
|
* @error can be %NULL to ignore errors, or non-%NULL to report errors.
|
||||||
|
* The error is set, if and only if the function returns %NULL.
|
||||||
|
*
|
||||||
|
* Returns: the new #GThread on success
|
||||||
|
*
|
||||||
|
* Deprecated:2.32: Use g_thread_new() instead
|
||||||
|
*/
|
||||||
|
GThread *
|
||||||
|
g_thread_create (GThreadFunc func,
|
||||||
|
gpointer data,
|
||||||
|
gboolean joinable,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return g_thread_new_internal (NULL, func, data, joinable, 0, g_enumerable_thread_add, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_thread_create_full:
|
||||||
|
* @func: a function to execute in the new thread.
|
||||||
|
* @data: an argument to supply to the new thread.
|
||||||
|
* @stack_size: a stack size for the new thread.
|
||||||
|
* @joinable: should this thread be joinable?
|
||||||
|
* @bound: ignored
|
||||||
|
* @priority: ignored
|
||||||
|
* @error: return location for error.
|
||||||
|
* @Returns: the new #GThread on success.
|
||||||
|
*
|
||||||
|
* This function creates a new thread.
|
||||||
|
*
|
||||||
|
* Deprecated:2.32: The @bound and @priority arguments are now ignored.
|
||||||
|
* Use g_thread_new() or g_thread_new_full() instead.
|
||||||
|
*/
|
||||||
|
GThread *
|
||||||
|
g_thread_create_full (GThreadFunc func,
|
||||||
|
gpointer data,
|
||||||
|
gulong stack_size,
|
||||||
|
gboolean joinable,
|
||||||
|
gboolean bound,
|
||||||
|
GThreadPriority priority,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return g_thread_new_internal (NULL, func, data, joinable, stack_size, g_enumerable_thread_add, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* GOnce {{{1 ------------------------------------------------------------- */
|
/* GOnce {{{1 ------------------------------------------------------------- */
|
||||||
gboolean
|
gboolean
|
||||||
|
@ -698,8 +698,8 @@ g_thread_create_proxy (gpointer data)
|
|||||||
/* This has to happen before G_LOCK, as that might call g_thread_self */
|
/* This has to happen before G_LOCK, as that might call g_thread_self */
|
||||||
g_private_set (&g_thread_specific_private, data);
|
g_private_set (&g_thread_specific_private, data);
|
||||||
|
|
||||||
if (thread->enumerable)
|
if (thread->setup_func)
|
||||||
g_enumerable_thread_add (thread);
|
thread->setup_func (thread);
|
||||||
|
|
||||||
/* The lock makes sure that thread->system_thread is written,
|
/* The lock makes sure that thread->system_thread is written,
|
||||||
* before thread->thread.func is called. See g_thread_new_internal().
|
* before thread->thread.func is called. See g_thread_new_internal().
|
||||||
@ -798,13 +798,13 @@ g_thread_new_full (const gchar *name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
GThread *
|
GThread *
|
||||||
g_thread_new_internal (const gchar *name,
|
g_thread_new_internal (const gchar *name,
|
||||||
GThreadFunc func,
|
GThreadFunc func,
|
||||||
gpointer data,
|
gpointer data,
|
||||||
gboolean joinable,
|
gboolean joinable,
|
||||||
gsize stack_size,
|
gsize stack_size,
|
||||||
gboolean enumerable,
|
GThreadSetup setup_func,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
GRealThread *result;
|
GRealThread *result;
|
||||||
GError *local_error = NULL;
|
GError *local_error = NULL;
|
||||||
@ -816,7 +816,7 @@ g_thread_new_internal (const gchar *name,
|
|||||||
result->thread.joinable = joinable;
|
result->thread.joinable = joinable;
|
||||||
result->thread.func = func;
|
result->thread.func = func;
|
||||||
result->thread.data = data;
|
result->thread.data = data;
|
||||||
result->enumerable = enumerable;
|
result->setup_func = setup_func;
|
||||||
result->name = name;
|
result->name = name;
|
||||||
G_LOCK (g_thread_new);
|
G_LOCK (g_thread_new);
|
||||||
g_system_thread_create (g_thread_create_proxy, result,
|
g_system_thread_create (g_thread_create_proxy, result,
|
||||||
@ -933,7 +933,6 @@ g_thread_self (void)
|
|||||||
thread->thread.joinable = FALSE; /* This is a safe guess */
|
thread->thread.joinable = FALSE; /* This is a safe guess */
|
||||||
thread->thread.func = NULL;
|
thread->thread.func = NULL;
|
||||||
thread->thread.data = NULL;
|
thread->thread.data = NULL;
|
||||||
thread->enumerable = FALSE;
|
|
||||||
|
|
||||||
g_system_thread_self (&thread->system_thread);
|
g_system_thread_self (&thread->system_thread);
|
||||||
|
|
||||||
|
@ -38,6 +38,9 @@ G_BEGIN_DECLS
|
|||||||
(memcpy (&(dest), &(src), GLIB_SIZEOF_SYSTEM_THREAD))
|
(memcpy (&(dest), &(src), GLIB_SIZEOF_SYSTEM_THREAD))
|
||||||
#endif /* GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P */
|
#endif /* GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P */
|
||||||
|
|
||||||
|
typedef struct _GRealThread GRealThread;
|
||||||
|
typedef void (*GThreadSetup) (GRealThread *thread);
|
||||||
|
|
||||||
G_GNUC_INTERNAL void g_system_thread_self (gpointer thread);
|
G_GNUC_INTERNAL void g_system_thread_self (gpointer thread);
|
||||||
G_GNUC_INTERNAL void g_system_thread_join (gpointer thread);
|
G_GNUC_INTERNAL void g_system_thread_join (gpointer thread);
|
||||||
G_GNUC_INTERNAL void g_system_thread_create (GThreadFunc func,
|
G_GNUC_INTERNAL void g_system_thread_create (GThreadFunc func,
|
||||||
@ -52,21 +55,20 @@ G_GNUC_INTERNAL gboolean g_system_thread_equal (gpointer thread1,
|
|||||||
G_GNUC_INTERNAL void g_system_thread_exit (void);
|
G_GNUC_INTERNAL void g_system_thread_exit (void);
|
||||||
G_GNUC_INTERNAL void g_system_thread_set_name (const gchar *name);
|
G_GNUC_INTERNAL void g_system_thread_set_name (const gchar *name);
|
||||||
|
|
||||||
G_GNUC_INTERNAL GThread *g_thread_new_internal (const gchar *name,
|
G_GNUC_INTERNAL GThread *g_thread_new_internal (const gchar *name,
|
||||||
GThreadFunc func,
|
GThreadFunc func,
|
||||||
gpointer data,
|
gpointer data,
|
||||||
gboolean joinable,
|
gboolean joinable,
|
||||||
gsize stack_size,
|
gsize stack_size,
|
||||||
gboolean enumerable,
|
GThreadSetup setup_func,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
typedef struct _GRealThread GRealThread;
|
|
||||||
struct _GRealThread
|
struct _GRealThread
|
||||||
{
|
{
|
||||||
GThread thread;
|
GThread thread;
|
||||||
GRealThread *next;
|
GRealThread *next;
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
gboolean enumerable;
|
GThreadSetup setup_func;
|
||||||
gpointer retval;
|
gpointer retval;
|
||||||
GSystemThread system_thread;
|
GSystemThread system_thread;
|
||||||
};
|
};
|
||||||
@ -74,8 +76,6 @@ struct _GRealThread
|
|||||||
G_GNUC_INTERNAL extern GSystemThread zero_thread;
|
G_GNUC_INTERNAL extern GSystemThread zero_thread;
|
||||||
G_GNUC_INTERNAL extern GMutex g_once_mutex;
|
G_GNUC_INTERNAL extern GMutex g_once_mutex;
|
||||||
|
|
||||||
G_GNUC_INTERNAL void g_enumerable_thread_add (GRealThread *thread);
|
|
||||||
|
|
||||||
/* initializers that may also use g_private_new() */
|
/* initializers that may also use g_private_new() */
|
||||||
G_GNUC_INTERNAL void _g_messages_thread_init_nomessage (void);
|
G_GNUC_INTERNAL void _g_messages_thread_init_nomessage (void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user