#include #include #include #include #include #include #include #include #include #include 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; }