本文主要是介绍IO-DAY6,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1:有一个隧道,全长5公里,有2列火车,全长200米火车A时速 100公里每小时火车B时速 50公里每小时现在要求模拟火车反复通过隧道的场景(不可能2列火车都在隧道内运行
#include<myhead.h>
pthread_mutex_t m;
pthread_mutex_t n;void* train_b(void* arg)
{while(1){pthread_mutex_lock(&n);printf("火车B进入隧道\n");sleep(6);pthread_mutex_unlock(&n);}
}
int main(int argc, char *argv[])
{pthread_mutex_init(&m,NULL);pthread_mutex_init(&n,NULL);pthread_t id;pthread_create(&id,NULL,train_b,NULL);pthread_detach(id);while(1){pthread_mutex_lock(&m);printf("火车A进入隧道\n");sleep(3);pthread_mutex_unlock(&m);}return 0;
}
2:有一个隧道,全长5公里,有3列火车,全长200米火车A时速 100公里每小时火车B时速 50公里每小时火车c时速 25公里每小时现在要求 火车A先通过隧道,火车B再通过隧道,最后火车c通过隧道
#include<myhead.h>
pthread_mutex_t m;
pthread_mutex_t n;
pthread_mutex_t t;
void* train_b(void* arg)
{while(1){pthread_mutex_lock(&n);printf("火车B通过隧道\n");sleep(2);pthread_mutex_unlock(&t);}
}void* train_c(void* arg)
{while(1){pthread_mutex_lock(&t);printf("火车C通过隧道\n");sleep(4);pthread_mutex_unlock(&m);}
}
int main(int argc, char *argv[])
{pthread_mutex_init(&m,NULL);pthread_mutex_init(&n,NULL);pthread_mutex_init(&t,NULL);pthread_t id1;pthread_t id2;pthread_create(&id1,NULL,train_b,NULL);pthread_create(&id2,NULL,train_c,NULL);pthread_detach(id1);pthread_detach(id2);pthread_mutex_lock(&n);pthread_mutex_lock(&t);while(1){pthread_mutex_lock(&m);printf("火车A通过隧道\n");sleep(1);pthread_mutex_unlock(&n);}return 0;
}
这篇关于IO-DAY6的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!