利用动态锁完成红绿灯交替
2026/5/13 8:22:15 网站建设 项目流程

利用动态锁完成红绿灯交替

#include <myhead.h>

sem_t sem1,sem2,sem3;

void *task1(void *p)

{

while(1)

{

sem_wait(&sem1);

sleep(1);

printf("红灯\n");

sem_post(&sem2);

}

}

void *task2(void *p)

{

while(1)

{

sem_wait(&sem2);

sleep(1);

printf("黄灯\n");

sem_post(&sem3);

}

}

void *task3(void *p)

{

while(1)

{

sem_wait(&sem3);

sleep(1);

printf("绿灯\n");

sem_post(&sem1);

}

}

int main(int argc, const char *argv[])

{

pthread_t tid1,tid2,tid3;

sem_init(&sem1,0,1);

sem_init(&sem2,0,0);

sem_init(&sem3,0,0);

if(pthread_create(&tid1,NULL,task1,NULL)!=0)

{

perror("pthread_create");

return -1;

}

if(pthread_create(&tid2,NULL,task2,NULL)!=0)

{

perror("pthread_create");

return -1;

}

if(pthread_create(&tid3,NULL,task3,NULL)!=0)

{

perror("pthread_create");

return -1;

}

while(1);

return 0;

}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询