问题提出:
我们有这样一个问题:在一个多线程程序中创建子进程并且让子线程
和子进程
去获取一把全局变量的锁,输出子线程得到锁,然后解锁,子进程拿到锁,然后解锁;
(一)初次尝试
- 代码:
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <stdlib.h>
#include <sys/wait.h>
pthread_mutex_t mutex;
void* fun(void* arg)
{
pthread_mutex_lock(&mutex);
printf("fun get lock\n");
sleep(3);
pthread_mutex_unlock(&mutex);
printf("fun unlock\n");
}
int main()
{
pthread_mutex_init(&mutex, NULL);
pthread_t id;
pthread_create(&id, NULL, fun, NULL);
sleep(1);
pid_t pid = fork();
if(pid == -1)
{
perror("fork err");
return -1;
}
if(pid == 0)
{
pthread_mutex_lock(