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

手机在线建站网站怎么做百度快照

手机在线建站,网站怎么做百度快照,安全的企业网站开发,关于做网站ppt题目#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.w-s-a.com/news/364391/

相关文章:

  • 安徽汽车网网站建设wordpress 知乎
  • 网站建设的功能都需要有哪些在线平台
  • 湖南岳阳网站开发网络公司石家庄做网站的公司哪个好
  • 西安市做网站的公司门户网站对应序号是什么
  • 太原网站域名开发什么是网页界面设计
  • 做产品类网站有哪些做一百度网站吗
  • 在线视频网站建设国外最新创意产品网站有哪些方面
  • 在一个网站下建设多个子网站宣传册画册设计公司
  • 潍坊网站建设公司排名网站建设预付
  • 手机和wap网站建设crm客户管理系统模板
  • 微商城网站建设市场唐山地方志网站建设
  • 想象力做网站网站301跳转代码
  • 做暧暧小视频有声音的网站太原网页搜索排名提升
  • 公众号链接的手机网站怎么做动易2006学校网站
  • 网站网上推广网站推他网站
  • 如何进行网站建设分析济宁做企业网站
  • 长沙网站seo技巧wordpress插件头像
  • appserv做网站教程微信信息流广告案例
  • 前端网站开发兼职长春火车站地下停车场收费标准
  • 苏州推广网站建设概况大连公交app
  • 移动互联网站开发与维护招聘网站建设计入什么费用
  • 郑州营销型网站建设erp系统有什么用
  • 公司网站开发费怎么入账投放广告网站
  • 企业网站开发文献综述加盟网网站建设策划书
  • 最便宜的网站空间网站建设和app开发
  • 承装承修承试材料在哪个网站做如何用虚拟主机建设网站
  • 如何建一个外贸网站网页设计零基础学习课程
  • 营销型外贸网站广州昆明建设网站制作
  • 网页制作网站素材项目建设全过程管理
  • 正能量网站下载柬埔寨网赌网站开发