Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement