Gistrec icon

Shared Mutex C

Gistrec | PRO | 03/18/19 09:28:14 AM UTC | 0 ⭐ | 579 👁️ | Never ⏰ | []
C++ |

1.12 KB

|

None

|

0 👍

/

0 👎

#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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎