函数

GLibThreadnew

自 2.32 开始

声明 [源代码]

GThread*
g_thread_new (
  const gchar* name,
  GThreadFunc func,
  gpointer data
)

描述 [源代码]

此函数创建一个新线程。新线程首先通过调用 func 与参数数据一起启动。线程将一直运行,直到 func 返回或新线程中调用 g_thread_exit()func 的返回值成为线程的返回值,它可以由 g_thread_join() 获取。

名称对于在调试器中区分线程可能很有用。它不用于其他目的,也不需要唯一。某些系统将 name 的长度限制为 16 字节。

如果无法创建线程,程序将终止。如果您想尝试处理失败,请参阅 g_thread_try_new()。

如果您正在使用线程来分派(可能是许多)短寿命的任务,GThreadPool 可能比手动启动和跟踪多个 GThreads 更合适。

要释放此函数返回的 struct,请使用 g_thread_unref()。请注意,g_thread_join() 隐式取消引用 GThread。

默认情况下,新线程将继承创建新线程的线程调度策略(POSIX)或线程优先级(Windows)。

这种行为在 GLib 2.64 中发生了变化:在 Windows 上,线程之前没有继承线程优先级,而是以默认优先级启动。从 GLib 2.64 开始,行为现在在 Windows 和 POSIX 之间保持一致,并且所有线程都继承其父线程的优先级。

可用自:2.32

参数

name

类型: const gchar*

新线程的(可选)名称。

参数可以是 NULL
数据由函数的调用者拥有。
该值是空终止的 UTF-8 字符串。
func

类型: GThreadFunc

在新建线程中执行的功能函数。

data

类型: gpointer

要提供给新线程的参数。

参数可以是 NULL
数据由函数的调用者拥有。

返回值

类型: GThread

新的 GThread

函数的调用者负责拥有数据并释放它。