编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
来源:互联网 发布:权限管理数据库表设计 编辑:程序博客网 时间:2024/04/25 13:25
#include <stdio.h>#include <pthread.h>#include <stdlib.h>#define NUM 10pthread_mutex_t mutex;pthread_cond_t conda;pthread_cond_t condb;pthread_cond_t condc;int floga = 0;int flogb = 0;int flogc = 0;void *thread_a(void *argv){int i = 0;char *p;p = (char *)argv;//printf("%s",p);while(i < NUM){pthread_mutex_lock(&mutex);floga = 1;pthread_cond_wait(&conda,&mutex);floga = 0;//pthread_mutex_unlock(&mutex);printf("%s",p);while(!flogb){ pthread_mutex_unlock(&mutex);sleep(10); pthread_mutex_lock(&mutex);}pthread_cond_signal(&condb);pthread_mutex_unlock(&mutex);i++;}floga = 1;}void *thread_b(void *argv){int i;char *p;p = (char *)argv;//printf("%s",p);while(i < NUM){pthread_mutex_lock(&mutex);flogb = 1;pthread_cond_wait(&condb,&mutex);flogb = 0;//pthread_mutex_unlock(&mutex);printf("%s",p);while(!flogc){pthread_mutex_unlock(&mutex);sleep(10);pthread_mutex_lock(&mutex);}pthread_cond_signal(&condc);pthread_mutex_unlock(&mutex);i++;}}void *thread_c(void *argv){int i;char *p;p = (char *)argv;//printf("%s",p);while(i < NUM){pthread_mutex_lock(&mutex);flogc = 1;pthread_cond_wait(&condc,&mutex);flogc = 0;//pthread_mutex_unlock(&mutex);printf("%s",p);while(!floga){pthread_mutex_unlock(&mutex);sleep(10);pthread_mutex_lock(&mutex);}pthread_cond_signal(&conda);pthread_mutex_unlock(&mutex);i++;}}int main(){pthread_t A;pthread_t B;pthread_t C;int ret;char *pa = "A";char *pb = "B";char *pc = "C";pthread_mutex_init(&mutex,NULL);pthread_cond_init(&conda,NULL);pthread_cond_init(&condb,NULL);pthread_cond_init(&condc,NULL);ret = pthread_create(&A,NULL,thread_a,(void *)pa);if(ret == -1){printf("pthread_create a error!\n");exit(-1);}ret = pthread_create(&B,NULL,thread_b,(void *)pb);if(ret == -1){printf("pthread_create a error!\n");exit(-1);}ret = pthread_create(&C,NULL,thread_c,(void *)pc);if(ret == -1){printf("pthread_create a error!\n");exit(-1);}sleep(2);pthread_cond_signal(&conda);pthread_join(A,NULL);//printf("\nfinished A!\n");pthread_join(B,NULL);//printf("\nfinished B!\n");pthread_join(C,NULL);//printf("\nfinished C!\n");printf("\nfinished!\n"); return 0;}
0 0
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 笔试题:编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
- 润和面试题:开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC
- VS2015写C++记录
- 使VS 2013 支持 Matlab 2013a/b
- c#字符串常用方法
- 『C语言』标准I/O内幕
- 指针之 *((volatile unsigned long *)(x))解析
- 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
- .Net应用程序域
- JavaScript创建函数的几种方式
- LocalCache本地缓存
- Go切片拷贝到数组
- 几种常见web 容器比较 (tomcat、 jboss 、resin、 weblogic、 websphere、 glassfish)
- NAND和NOR Flash的区别
- Android SDK Manager国内下载缓慢的问题
- Codeforces549C - The Game Of Parity