时间:2016-02-26 18:11 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的电脑教程是服务器系列之:【Linux多线程编程(二)】,下面是详细的分享!
Linux多线程编程(二)
#include#include #include #include #include #define CELL 10 #define FLORE 0 int i=0; pthread_mutex_t mutex; pthread_cond_t cond_pro, cond_con; void* pro_handler(void *arg) { pthread_detach(pthread_self()); while(1) { pthread_mutex_lock(&mutex); while(i >=CELL) { pthread_cond_wait(&cond_pro,&mutex); } i++; if(i==1) { pthread_cond_signal(&cond_con); } printf("add i: %d \n", i); pthread_mutex_unlock(&mutex); sleep(rand() % 5 + 1); } } void* con_handler(void *arg) { pthread_detach(pthread_self()); while(1) { pthread_mutex_lock(&mutex); while(i <=FLORE) { pthread_cond_wait(&cond_cno,&mutex); } i--; if(i==9) { pthread_cond_signal(&cond_pro); } printf("con i: %d \n", i); pthread_mutex_unlock(&mutex); sleep(rand() % 5 + 1); } } int main(int argc, char *argv[]) // exe +num -num { srand(getpid()); int con_cnt, pro_cnt; pro_cnt=atoi(argv[1]); con_cnt=atoi(argv[2]); pthread_mutex_init(&mutex,NULL); pthread_cond_init(&cond_pro,NULL); pthread_cond_init(&cond_con,NULL); pthread_t *arr=(pthread_t*)calloc(con_cnt + pro_cnt , sizeof(pthread_t)); int index=0; while(pro_cnt > 0) { pthread_create(arr + index, NULL, pro_handler, NULL); index++; pro_cnt--; } while(con_cnt > 0) { pthread_create(arr + index, NULL, con_handler, NULL); index++; con_cnt--; } while(1); pthread_mutex_destroy(&mutex); pthread_cond_destroy(&cond_pro); pthread_cond_destroy(&cond_con); return 0; }
以上就是关于Linux多线程编程(二)的服务器维护教程分享,更多电脑教程请移步到>>电脑教程频道。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
