PR_CreateThread¶
创建一个新线程。
语法¶
#include <prthread.h>
PRThread* PR_CreateThread(
PRThreadType type,
void (*start)(void *arg),
void *arg,
PRThreadPriority priority,
PRThreadScope scope,
PRThreadState state,
PRUint32 stackSize);
参数¶
PR_CreateThread 具有以下参数
类型
指定线程是用户线程 (
PR_USER_THREAD
) 还是系统线程 (PR_SYSTEM_THREAD
)。开始
指向线程根函数的指针,该函数作为新线程的根被调用。从该函数返回是终止线程的唯一方法。
参数
指向根函数唯一参数的指针。NSPR 不会评估此参数中传递的值的类型或有效性。
优先级
新创建线程的初始优先级。
范围
指定您对使线程本地 (
PR_LOCAL_THREAD
)、全局 (PR_GLOBAL_THREAD
) 或全局绑定 (PR_GLOBAL_BOUND_THREAD
) 的偏好。但是,如果需要,NSPR 可能会覆盖此偏好。状态
指定线程是可连接的 (
PR_JOINABLE_THREAD
) 还是不可连接的 (PR_UNJOINABLE_THREAD
)。堆栈大小
指定您对与新创建线程关联的堆栈大小(以字节为单位)的偏好。如果您在此参数中传递零,PR_CreateThread 将选择最有利的机器特定堆栈大小。
返回值¶
该函数返回以下值之一
如果成功,则指向新线程的指针。此指针在线程从其根函数返回之前保持有效。
如果失败(例如,如果系统资源不可用),则为
NULL
。
描述¶
如果您希望线程在等待创建者执行某些操作时启动,请在创建线程之前进入一个锁,然后让线程的根函数进入并退出同一个锁。当您准备好让线程运行时,退出锁。有关锁和线程同步的更多信息,请参阅 NSPR 简介。
如果您希望检测创建的线程的完成情况,请使其可连接。然后,您可以使用 PR_JoinThread 来同步另一个线程的终止。