# PR_Initialize Provides an alternate form of explicit initialization. In addition to establishing the sequence of operations, {ref}`PR_Initialize` implicitly calls {ref}`PR_Cleanup` on exiting the primordial function. ## Syntax ```{code} #include PRIntn PR_Initialize( PRPrimordialFn prmain, PRIntn argc, char **argv, PRUintn maxPTDs); ``` ### Parameters {ref}`PR_Initialize` has the following parameters: `prmain` : The function that becomes the primordial thread's root function. Returning from prmain leads to termination of the process. `argc` : The length of the argument vector, whether passed in from the host's program-launching facility or fabricated by the actual main program. This approach conforms to standard C programming practice. `argv` : The base address of an array of strings that compromise the program's argument vector. This approach conforms to standard C programming practice. `maxPTDs` : This parameter is ignored. ### Returns The value returned from the root function, `prmain`. ## Description {ref}`PR_Initialize` initializes the NSPR runtime and places NSPR between the caller and the runtime library. This allows `main` to be treated like any other function, signaling its completion by returning and allowing the runtime to coordinate the completion of the other threads of the runtime. {ref}`PR_Initialize` does not return to its caller until all user threads have terminated. The priority of the main (or primordial) thread is `PR_PRIORITY_NORMAL`. The thread may adjust its own priority by using {ref}`PR_SetThreadPriority`.