#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <assert.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <pthread.h>
static pthread_mutex_t* shered_mutex = NULL;
void initialise_shared() {
// Помещаем данные в общую память
int prot = PROT_READ | PROT_WRITE;
int flags = MAP_SHARED | MAP_ANONYMOUS;
shered_mutex = (pthread_mutex_t *) mmap(NULL, sizeof(pthread_mutex_t), prot, flags, -1, 0);
assert(shered_mutex && "Не удалось создать общую память");
// Инициализируем мьютекс, чтобы он работал правильно в общей памяти
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
pthread_mutex_init(shered_mutex, &attr);
}
int main() {
initialise_shared();
pthread_mutex_lock(shered_mutex);
pthread_mutex_unlock(shered_mutex);
munmap(shered_mutex, sizeof(shered_mutex));
return 0;
}
Comments
0 B
|👍
/👎