/* 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;
}