Provides an alternate form of explicit initialization. In addition to establishing the sequence of operations, PR_Initialize implicitly calls PR_Cleanup on exiting the primordial function.


#include <prinit.h>

PRIntn PR_Initialize(
  PRPrimordialFn prmain,
  PRIntn argc,
  char **argv,
  PRUintn maxPTDs);


PR_Initialize has the following parameters:


The function that becomes the primordial thread’s root function. Returning from prmain leads to termination of the process.


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.


The base address of an array of strings that compromise the program’s argument vector. This approach conforms to standard C programming practice.


This parameter is ignored.


The value returned from the root function, prmain.


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.

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