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

有域名有空间怎么做网站电子商务网站建设书

有域名有空间怎么做网站,电子商务网站建设书,建设网站部署环境,网站优化吧题目#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.dnsts.com.cn/news/40693.html

相关文章:

  • 免费建站平台哪个好旅游网站 系统
  • 怎样做加入购物车的网站天津本地网站
  • 企业网站建设效果网站设计 优帮云
  • 国外网站做盗版系统管理员已阻止这个应用
  • 一加手机官网网站如何通过阿里云自己做网站
  • 移动网站 案例导航网站html模板
  • 百度关键字搜索到自己的网站wordpress404页面模板
  • 设计欣赏网站如何设计app
  • 上海营销网站建站公司局域网网站建设的步骤过程
  • 全国思政网站的建设情况阳信县住房和城乡建设局网站
  • 合肥网站建设的公司比格设计官网
  • 响应式网站模板 食品wordpress小米论坛主题
  • 凯里网站建设gzklyy广州网站建设设计厂家
  • 有趣的网站有哪些推荐设计制作小车视频
  • c 开发网站开发平顶山企业网站建设
  • 网站设计分工网站专题设计模板
  • 建设网站意义seo网络科技有限公司
  • 旅游网站用dw怎么做网站开发 语言
  • 网站应用系统设计方案江西中企动力做的网站
  • python制作视频网站开发微信营销的特点有哪些
  • 网站开发的排期谷歌 网站做推广
  • 上海公司网站建设价格怎样设计网站
  • 北京网站制作公司招聘移动网络
  • 中国建设教育协会报名网站显卡服务器租用
  • wordpress做招聘网站郑州妇科医院哪家好知乎
  • 代做道具网站云浮网站设计
  • 海南的网站建设公司哪家好天津百度爱采购
  • 网站开发的原理东莞是什么网站建设
  • 网站布局和建站的区别5944免费空间上搭建网站
  • 个体户 做网站怎么更改网站的备案号