PR_SetThreadPrivate

设置每个线程的私有数据。

语法

#include <prthread.h>

PRStatus PR_SetThreadPrivate(PRUintn index, void *priv);

参数

PR_SetThreadPrivate 具有以下参数

index

每个线程私有数据表中的索引。

priv

每个线程的私有数据,或者更可能是指向数据的指针。

返回值

该函数返回以下值之一

  • 如果成功,则返回 PR_SUCCESS

  • 如果索引无效,则返回 PR_FAILURE

描述

如果线程已经与之关联了非 NULL 私有数据,并且如果已知该索引的析构函数(不为 NULL),则 NSPR 会在设置新数据值之前调用与该索引关联的析构函数。索引处的指针将与 NULL 交换。如果交换出的值不为 NULL,则会调用析构函数。返回时,与索引关联的私有数据将重新分配新私有数据的值,即使它为 NULL。运行时不会对私有数据提供任何保护。析构函数在运行时不持有任何锁的情况下被调用。同步是客户端的责任。

在线程终止之前,消除索引处线程私有数据的唯一方法是调用 PR_SetThreadPrivate 并传入 NULL 参数。这会导致调用该索引的析构函数,然后在表中分配一个 NULL。客户端不得在首先将其从表中消除之前删除非 NULL 私有数据的引用对象。