
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#define false 0
#define true 1
int flag[2]
int turn
void P0()
{
while(true)
{
flag[0]=true
turn = 1
while(flag[1]&&turn==1)
printf ("P0 is in critical section.\n")
printf ("P0 is going to leave critical section.\n")
flag[0]=false
printf ("P0 is out of critical section.\n")
}
}
void P1()
{
while(true)
{
flag[1]=true
turn = 0
while(flag[0]&&turn==0)
printf ("P1 is in critical section.\n")
printf ("P1 is going to leave critical section.\n")
flag[1]=false
printf ("P1 is out of critical section.\n")
}
}
int main()
{
pthread_t pid0
pthread_t pid1
flag[0]=false
flag[1]=false
pthread_create(&pid0, NULL, (void*)P0, NULL)
pthread_create(&pid1, NULL, (void*)P1, NULL)
pthread_join(pid0, NULL)
pthread_join(pid1, NULL)
exit(0)
}
Linux系统下实现
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)