### IPrimalLock

  IPrimalLock is a very specialized resource lock class. It is intended only for use during lazy evaluation of static/global objects. For instance, many developers don't want to create static/global objects because of the order of construction problems involved. They would prefer to provide access methods which dynamically allocate these objects only when they are actually required. IPrimalLock is intended to make such 'lazy evaluation' thread safe.

  IPrimalLock is available for use at all times, including DLL initialization and static/global constructor time.

  DO NOT ever create a global or static IPrimalLock object, because that will permanently lock the primal lock and your application will likely hang forever. It is only for use on the stack, to create scope based locking during initialization.

  Also DO NOT use IPrimalLock as a general purpose thread synchronization mechanism. Use IPrimalLock to allocate an IPrivateResource or ISharedResource object in a thread safe way and use that resource object to do your thread synchronization. Otherwise, IPrimalLock would become a choke point causing unwarranted blocking of otherwise unrelated threads.

### IPrimalLock - Member Functions and Data by Group

### Constructors & Destructor

The constructors and destructor for this class.

~IPrimalLock

      public:
      ~IPrimalLock()

  The destructor will release the primal lock, letting go any other thread that is waiting on it.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

IPrimalLock

      public:
      IPrimalLock()

  The constructor will wait until it can obtain the primal lock. Once the lock is obtained, it will return and you can then assume that you have control of the lock, and do work within the scope of the lock that will not be interrupted by other threads.
  The default constructor is the only constructor available. It locks the primal lock, waiting as necessary for other threads to release it.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### IPrimalLock - Inherited Member Functions and Data

#### Inherited Public Functions

  - None

#### Inherited Public Data

  - None

#### Inherited Protected Functions

  - None

#### Inherited Protected Data

  - None