# 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 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.