PRThreadScope¶
NSPR 线程的范围,作为参数传递给 PR_CreateThread 或由 PR_GetThreadScope 返回。
语法¶
#include <prthread.h>
typedef enum PRThreadScope {
PR_LOCAL_THREAD,
PR_GLOBAL_THREAD
PR_GLOBAL_BOUND_THREAD
} PRThreadScope;
枚举器¶
PR_LOCAL_THREAD
本地线程,由 NSPR 在进程内本地调度。
PR_GLOBAL_THREAD
全局线程,由主机操作系统调度。
PR_GLOBAL_BOUND_THREAD
全局绑定(内核)线程,由主机操作系统调度
描述¶
类型为 PRThreadScope 的枚举器指定线程的调度方式:由 NSPR 在进程内本地调度(本地线程)还是由主机全局调度(全局线程)。
全局线程由主机操作系统调度,并与主机操作系统上的所有其他线程竞争资源。它们受到相当复杂的调度技术的约束。
本地线程由 NSPR 在进程内调度。假设进程是全局调度的,但 NSPR 可以无需系统干预即可操作本地线程。在大多数情况下,这会导致明显的性能提升。
但是,在需要 NSPR 区分全局线程和本地线程的系统上,全局线程总是需要执行任何形式的 I/O。如果线程可能执行大量 I/O,则尽早将其设为全局线程可能是合理的。
在不区分本地线程和全局线程的系统上,NSPR 会静默忽略调度请求。要查找线程的范围,请调用 PR_GetThreadScope。