/* wmutex-child.c */
#include <windows.h>
int main(void)
{
int i;
/* Get shared memory created by the parent (by name) */
HANDLE shmem = CreateFileMapping(INVALID_HANDLE_VALUE, 0, PAGE_READWRITE, 0, sizeof(unsigned), "share_data");
/* Attach to it */
unsigned *value = (unsigned *)MapViewOfFile(shmem, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(unsigned));
/* Get mutex created by the parent (by name) */
HANDLE mutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "share_mutex");
for (i = 0; i < 1000 * 100; i++)
{
WaitForSingleObject(mutex, INFINITE);
(*value)++;
ReleaseMutex(mutex);
}
/* Cleanup */
UnmapViewOfFile(value);
CloseHandle(shmem);
return 0;
}