/** * g_thread_try_new: * @name: a name for the new thread * @func: a function to execute in the new thread * @data: an argument to supply to the new thread * @error: return location for error, or %NULL * * This function is the same as g_thread_new() except that * it allows for the possibility of failure. * * If a thread can not be created (due to resource limits), * @error is set and %NULL is returned. * * Returns: the new #GThread, or %NULL if an error occurred * * Since: 2.32 */ GThread * g_thread_try_new (const gchar *name, GThreadFunc func, gpointer data, GError **error) { return g_thread_new_internal (name, g_thread_proxy, func, data, 0, error); }
/** * g_thread_new: * @name: a name for the new thread * @func: a function to execute in the new thread * @data: an argument to supply to the new thread * * This function creates a new thread. The new thread starts by invoking * @func with the argument data. The thread will run until @func returns * or until g_thread_exit() is called from the new thread. The return value * of @func becomes the return value of the thread, which can be obtained * with g_thread_join(). * * The @name can be useful for discriminating threads in a debugger. * Some systems restrict the length of @name to 16 bytes. * * If the thread can not be created the program aborts. See * g_thread_try_new() if you want to attempt to deal with failures. * * To free the struct returned by this function, use g_thread_unref(). * Note that g_thread_join() implicitly unrefs the #GThread as well. * * Returns: the new #GThread * * Since: 2.32 */ GThread * g_thread_new (const gchar *name, GThreadFunc func, gpointer data) { GError *error = NULL; GThread *thread; thread = g_thread_new_internal (name, g_thread_proxy, func, data, 0, &error); if G_UNLIKELY (thread == NULL) g_error ("creating thread '%s': %s", name ? name : "", error->message); return thread; }
/** * 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. * * This function creates a new thread. * * Returns: the new #GThread on success. * * Deprecated:2.32: The @bound and @priority arguments are now ignored. * Use g_thread_new(). */ GThread * g_thread_create_full (GThreadFunc func, gpointer data, gulong stack_size, gboolean joinable, gboolean bound, GThreadPriority priority, GError **error) { GThread *thread; thread = g_thread_new_internal (NULL, g_deprecated_thread_proxy, func, data, stack_size, error); if (thread && !joinable) { thread->joinable = FALSE; g_thread_unref (thread); } return thread; }