Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

All processes prevent casual exchange of data. However, occasionally two processes might need to communicate with each other. One method that enables processes to communicate is called interprocess synchronization.

Because multiple processes can have handles to the same event or mutex object, these objects can be used to accomplish interprocess synchronization.

The process that creates an object can use the handle returned by the CreateEventor the CreateMutexfunction.

Other processes can open a handle to the object by using the object name in another call to the CreateEventor CreateMutexfunctions.

Named objects provide a way for processes to share object handles.

The name specified by the creating process is limited to the number of characters that are defined by MAX_PATH. It can include any character except the backslash (\) path-separator character.

After a process creates a named event or mutex object, other processes can use the name to call the appropriate function, either CreateEventor CreateMutex, to open a handle to the object.

Name comparison is case-sensitive.

Each object type, such as memory maps, semaphores, events, message queues, mutexes, and watchdog timers, has its own separate namespace. Empty strings ("") are handled as named objects. On Windows desktop-based platforms, synchronization objects all share the same namespace.

The following code example shows how to use object names by creating and opening named objects. The first process uses CreateMutexto create the mutex object. The function succeeds even if an existing object has the same name.

Copy Code
HANDLE MakeMyMutex (void)
{
   HANDLE hMutex;
   hMutex = CreateMutex
   (
	NULL, // No security attributes
	FALSE, // Initially not owned
	TEXT("MutexToProtectDatabase")); // Name of mutex object
	if (NULL == hMutex)
	{
		 // Your code to deal with the error goes here.
}
   return hMutex;
   }
}

See Also

500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@systemmanager.forsenergy.ru to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.