当前位置: 首页 > news >正文

网络设计报告书江苏seo

网络设计报告书,江苏seo,wordpress oa插件,用wordpress做小程序题目#xff1a;编写代码实现编写一个程序#xff0c;开启三个线程#xff0c;这三个线程的ID分别是A,B,C,每个线程将自己的ID在屏幕上打印10遍#xff0c;要求输出必须按照ABC的顺序显示#xff0c;如#xff1a;ABCABCABC... 思路#xff1a;创建三个ID分别为ABC的线程…题目编写代码实现编写一个程序开启三个线程这三个线程的ID分别是A,B,C,每个线程将自己的ID在屏幕上打印10遍要求输出必须按照ABC的顺序显示如ABCABCABC... 思路创建三个ID分别为ABC的线程定义三个信号量利用信号量减值0时会堵塞这一特点来实现ABC顺序显示。具体是给A一个信号量B和C设初始信号量为0当A申请信号量信号量减1成0信号量A堵塞这时对B释放信号量开始执行线程B当B也申请信号量减一变0造成堵塞时C释放信号量执行线程C.......一直循环..... 代码 #includestdio.h #includepthread.h #includeerrno.h #includesemaphore.h #includestring.h pthread_t A,B,C; //获取线程ID pthread_mutex_t lock; //互斥锁 sem_t sem1,sem2,sem3; //定义信号量 /*创建线程函数的目的是因为 线程创建函数pthread_create的第三个参数是一个函数指针*/ void *A_handler(void *arg) //线程A函数 {int count *((int *)arg);//线程执行次数通过线程创建函数pthread_create的第四个参数获取 while(count 0){sem_wait(sem1); //为信号量sem1申请信号量若申请成功信号量值减1 //pthread_mutex_lock(lock); //上锁 printf(A...\n); //申请成功输出AA为线程A标识符 sleep(1); //休眠1秒 count--; //线程A执行次数减1 //pthread_mutex_unlock(lock);//解锁 sem_post(sem2); //释放信号量信号量值加一。此操作是为了防止sem1将信号量申请完造成堵塞因此这里让sem2释放信号量始终保留一定信号量。 }pthread_exit(A...exit);//终止调用线程A } void *B_handler(void *arg) //线程B函数 {int count *((int *)arg); //线程B执行次数 通过线程创建函数pthread_create的第四个参数arg获取 while(count 0){sem_wait(sem2); //为sem2申请信号量,信号量 值减一 //pthread_mutex_lock(lock);//上锁 printf(B...\n);//打印B申请成功的提示 sleep(1);//休眠1秒 count--;//线程B执行次数减1直到不大于0不再申请 //pthread_mutex_unlock(lock);sem_post(sem3);//同线程A函数以释放信号量sem3来满足信号量sem2 申请所需的信号量防止堵塞 }pthread_exit(B...exit);//终止调用线程B } void *C_handler(void *arg)//线程C函数 {int count *((int *)arg);//线程C执行次数 通过线程创建函数pthread_create的第四个参数arg获取 while(count 0){sem_wait(sem3);//为sem3申请信号量,信号量 值减一 //pthread_mutex_lock(lock);//上锁 printf(C...\n);//输出提示表示申请成功 sleep(1);//休眠也可以说是延时 count--;// 线程C执行次数减1直到不大于0不再申请//pthread_mutex_unlock(lock);sem_post(sem1);//同线程A和B函数以释放信号量sem1来满足信号量sem3申请所需的信号量防止堵塞 }pthread_exit(C...exit);//终止线程C调用打印终止字符提示 } int main(int argc,const char *argv[]) //参数用于对运行成功后传入终端输入参数的个数和名称 {int arg1 10; //线程A执行次数 int arg2 10; //线程B执行次数 int arg3 10;//线程C执行次数 void *retval; //非空指针用于pthread_join函数返回线程标识 /*信号量初始化参数1为信号量标识符参数2有两个值,为0时表示信号量用于同一进程多线程之间非0时表示信号量由于进程与进程之间 参数3为信号量初始值 *//*三个信号量分别设置1,0,0;基此循环*/ if(sem_init(sem1,0,1)0) //信号量sem1初始化 { perror(sem_init error);}if(sem_init(sem2,0,0)0)//信号量sem2初始化 {perror(sem_init error);}if(sem_init(sem3,0,0)0)//信号量sem3初始化 {perror(sem_init error);}/*线程创建函数pthread_create共有四个参数参数1为线程标识符也叫线程ID参数2指向一个结构体为NULL时表示采用默认属性参数3指向线程函数参数4为参数3指向的函数传参。*/ if(pthread_create(A,NULL,A_handler,(void *)arg1) ! 0) //创建ID为A默认属性指向线程函数A传入参数执行次数为 arg1的线程 {perror(pthread_createA error);}if(pthread_create(B,NULL,B_handler,(void *)arg2) ! 0)//创建ID为B默认属性指向线程函数B传入参数执行次数为 arg2的线程 {perror(pthread_createB error);}if(pthread_create(C,NULL,C_handler,(void *)arg3) ! 0)//创建ID为C默认属性指向线程函数C传入参数执行次数为 arg3的线程 {perror(pthread_createC error);}/*pthread_join函数用于线程终止后返回非空指针retval保存的线程标识符 */pthread_join(A,retval); //返回线程A的标识符printf(%s\n,(char *)retval); //输出线程标识符 pthread_join(B,retval);printf(%s\n,(char *)retval);pthread_join(C,retval);printf(%s\n,(char *)retval);sem_destroy(sem1); //摧毁信号量 sem_destroy(sem2);sem_destroy(sem3);//pthread_mutex_destory(lock);return 0; } 编译时要加后缀 -lpthread gcc thread.c -o thread -lpthread 运行结果
http://www.hkea.cn/news/14590893/

相关文章:

  • 网站页面布局ih5网页制作教程
  • 网站如何安装dedecms哪个网站可以做c语言的题
  • 做网站不要盲目跟风网站模板减肥
  • 网站源码大全最新小米4路由器可以做网站嘛
  • 网站地图生成器哪个好网站建设及相关流程图
  • 网站建设交互效果戴尔公司网站建设的特点是什么
  • 网站建设现在主要做些什么企业网站免费建设工具
  • 企业网站建站流程衡东网站定制
  • 第二章 网站建设一页网站
  • wordpress建站案例视频教程个人网页制作成品整页
  • 变更icp备案网站信息WordPress与其它
  • 网站优化的主要目的是什么高级营销网站建设只需1200元
  • 如何设置网站关键字wordpress 文章文件
  • 鲜花网站有关建设35个成功的市场营销策划案例
  • 网站上的淘客组件是怎样做的淮安网站开发
  • 标志设计logo网站常用来做网站首业的是
  • 微信小程序可以做音乐网站吗分销系统
  • seo 网站制作一级造价工程师成绩查询
  • 网站规划与建设重要性理解与体会专业网站优化哪家好
  • 创建公司网站教程大连网站制作最好的公司
  • 上海建设银行黄浦区营业网站个人备案用作资讯网站
  • 局域网手机网站建设做神马网站快速排名
  • dw做网站怎么换图片电脑显示无法运行wordpress
  • 如何免费建个人网站江苏省建设厅官网网站
  • 建设工程资质证书二维码扫描网站上海网站推广专员需求
  • 佛山制作网站开发公司建设静态网站工具
  • 有域名有网站怎么解决办法建网站如何上传
  • 广东哪家网站建深圳seo网站排名优化
  • 松门建设规划局网站网站导航栏怎么做简单
  • 网站建设是什么专业啊网络营销是什么部门