Skip to content

Instantly share code, notes, and snippets.

@JosephKu
Last active May 10, 2017 07:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JosephKu/fb7366c06ef6c19778566b5238554a58 to your computer and use it in GitHub Desktop.
Save JosephKu/fb7366c06ef6c19778566b5238554a58 to your computer and use it in GitHub Desktop.
Windows named share memory sample
#include <Windows.h>
#include <stdio.h>
int main()
{
int shmem_size = sizeof(unsigned int);
HANDLE shmem = INVALID_HANDLE_VALUE;
HANDLE mutex = INVALID_HANDLE_VALUE;
mutex = CreateMutex(NULL, FALSE, L"mutex_name");
shmem = CreateFileMapping(
INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0,
shmem_size,
L"shared_memory_name"
);
char *buf = (char*)MapViewOfFile(shmem, FILE_MAP_ALL_ACCESS, 0, 0, shmem_size);
for (unsigned int i = 0; i < 100; i++) {
WaitForSingleObject(mutex, INFINITE);
printf("Read shared memory... %d\n", buf[0]);
ReleaseMutex(mutex);
Sleep(1000);
}
UnmapViewOfFile(buf);
CloseHandle(shmem);
ReleaseMutex(mutex);
return 0;
}
#include <windows.h>
#include <stdio.h>
int main()
{
int shmem_size = sizeof(unsigned int);
HANDLE shmem = INVALID_HANDLE_VALUE;
HANDLE mutex = INVALID_HANDLE_VALUE;
mutex = CreateMutex(NULL, FALSE, L"mutex_name");
shmem = CreateFileMapping(
INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0,
shmem_size,
L"shared_memory_name"
);
char *buf = (char*)MapViewOfFile(shmem, FILE_MAP_ALL_ACCESS, 0, 0, shmem_size);
for (unsigned int i = 0; i < 100; i++) {
WaitForSingleObject(mutex, INFINITE);
memset(buf, i, shmem_size);
printf("Write shared memory... %d\n", i);
ReleaseMutex(mutex);
Sleep(1000);
}
UnmapViewOfFile(buf);
CloseHandle(shmem);
ReleaseMutex(mutex);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment