互斥量常用来做线程间同步,不过,我们可以恰当设置其属性实现进程间同步

互斥量类型为pthread_mutexattr_t,使用pthread_mutexattr_init函数来初始化,使用pthread_mutexattr_setpshared来设置pshared属性,进程锁属性设置为PTHREAD_PROCESS_SHARED

#include <stdio.h>
#include <sys/wait.h>
#include <pthread.h>
#include <fcntl.h>
#include <unistd.h>


int main()
{
    pthread_mutexattr_t attr;
    pthread_mutex_t mutex;

    pthread_mutexattr_init(&attr);
    pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
    pthread_mutex_init(&mutex, &attr);

    pid_t pid = fork();
    if (pid > 0)
    {
        pthread_mutex_lock(&mutex);
        printf("in parent process\n");
        sleep(2);
        pthread_mutex_unlock(&mutex);
        wait(NULL);
    }
    else if (pid == 0)
    {
        sleep(1);
        pthread_mutex_lock(&mutex);
        printf("in child process\n");
        pthread_mutex_unlock(&mutex);
        _exit(0);
    }

    pthread_mutexattr_destroy(&attr);
    pthread_mutex_destroy(&mutex);

    return 0;
}

  

相关文章:

  • 2021-06-04
  • 2022-12-23
  • 2021-10-03
  • 2021-12-27
  • 2021-08-30
  • 2021-12-03
  • 2021-11-22
  • 2021-10-13
猜你喜欢
  • 2022-01-04
  • 2022-12-23
  • 2022-12-23
  • 2021-04-27
  • 2020-03-22
  • 2021-08-06
相关资源
相似解决方案