【发布时间】:2020-08-17 21:27:42
【问题描述】:
使用下面这个基本的pthread 代码,将pthread_create 转换为fork() 并达到类似结果的方法是什么。
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>
sem_t mutex;
void* wait_t(void* a)
{
(int)a--;
if ((int)a < 0)
{
sem_wait(&mutex);
printf("waiting\n");
}
}
void* signal_t(void* a)
{
(int)a++;
if ((int)a <= 0)
{
printf("signal\n");
sem_post(&mutex);
}
}
int main()
{
sem_init(&mutex, 0, 1);
int i = -2;
pthread_t t1, t2;
pthread_create(&t1, NULL, wait_t, i);
pthread_create(&t2, NULL, signal_t, i);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
exit(0);
}
【问题讨论】:
-
您必须使用
fork()创建两个子进程,并在每个子进程中调用函数wait_t和signal_t。 -
@peachykeen 那个问题是关于如何使用
fork()这个问题convert pthread to process 并达到类似的结果
标签: c multithreading pthreads fork posix