Source code
Revision control
Copy as Markdown
Other Tools
# PR_AttachThread
:::{container} blockIndicator obsolete obsoleteHeader
**Obsolete**
This feature is obsolete. Although it may still work in some
browsers, its use is discouraged since it could be removed at any
time. Try to avoid using it.
:::
Associates a {ref}`PRThread` object with an existing native thread.
## Syntax
```{code}
#include <pprthread.h>
PRThread* PR_AttachThread(
PRThreadType type,
PRThreadPriority priority,
PRThreadStack *stack);
```
### Parameters
{ref}`PR_AttachThread` has the following parameters:
`type`
: Specifies that the thread is either a user thread
(`PR_USER_THREAD`) or a system thread (`PR_SYSTEM_THREAD`).
`priority`
: The priority to assign to the thread being attached.
`stack`
: The stack for the thread being attached.
### Returns
The function returns one of these values:
- If successful, a pointer to a {ref}`PRThread` object.
- If unsuccessful, for example if system resources are not available,
`NULL`.
## Description
You use {ref}`PR_AttachThread` when you want to use NSS functions on the
native thread that was not created with NSPR. {ref}`PR_AttachThread`
informs NSPR about the new thread by associating a {ref}`PRThread` object
with the native thread.
The thread object is automatically destroyed when it is no longer
needed.
You don't need to call {ref}`PR_AttachThread` unless you create your own
native thread. {ref}`PR_Init` calls {ref}`PR_AttachThread` automatically for
the primordial thread.
:::{note}
As of NSPR release v3.0, {ref}`PR_AttachThread` and
{ref}`PR_DetachThread` are obsolete. A native thread not created by NSPR
is automatically attached the first time it calls an NSPR function,
and automatically detached when it exits.
:::
In NSPR release 19980529B and earlier, it is necessary for a native
thread not created by NSPR to call {ref}`PR_AttachThread` before it calls
any NSPR functions, and call {ref}`PR_DetachThread` when it is done calling
NSPR functions.