函数
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
。
函数的调用者负责拥有数据并释放它。 |