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 来同步另一个线程的终止。