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

专注高密做网站哪家强飞书企业邮箱怎么申请

专注高密做网站哪家强,飞书企业邮箱怎么申请,福田瑞沃小金刚,四川网络营销推广linux多线程编程-信号量信号量机制锁机制使用是有限制的#xff0c;锁只有两种状态#xff0c;即加锁和解锁#xff0c;对于互斥的访问一个全局变量#xff0c;这样的方式还可以对付#xff0c;但是要是对于其他的临界资源#xff0c;比如说多台打印机等#xff0c;这种…linux多线程编程-信号量信号量机制锁机制使用是有限制的锁只有两种状态即加锁和解锁对于互斥的访问一个全局变量这样的方式还可以对付但是要是对于其他的临界资源比如说多台打印机等这种方式显然不行了。信号量机制在操作系统里面学习的比较熟悉了信号量是一个整数计数器其数值表示空闲临界资源的数量。当有进程释放资源时信号量增加表示可用资源数增加当有进程申请到资源时信号量减少表示可用资源数减少。这个时候可以把锁机制认为是0-1信号量。关于信号量机制的函数 初始化信号量int sem_init(sem_t * sem, int pshared, unsigned int value);- 成功返回0失败返回-1- 参数sem表示指向信号结构的指针。- 参数pshared不是0 的时候该信号量在进程间共享否则只能在当前进程的所有线程间共享。- 参数value信号量的初始值。int sem_wait(sem_t *sem); 信号量减一操作有线程申请资源- 成功返回0否则返回-1- 参数sem指向一个信号量的指针int sem_post(sem_t *sem);信号量加一操作有线程释放资源- 成功返回0否则返回-1- 参数sem指向一个信号量指针int sem_destroy(sem_t *sem); 销毁信号量- 成功返回0否则返回-1- 参数sem指向一个信号量的指针。信号量来解决多线程的同步问题程序代码如下#include#include#include#include#include#include void* ticketport1(void*);void* ticketport2(void*);int tickets100;sem_t mutex,full; //定义两个信号量int main(){ int ret; pthread_t id1,id2; retsem_init(mutex,0,1); //初始化mutex信号量为1 retsem_init(full,0,0); //初始化full信号量为0 if(ret!0) { perror(sem_init); } retpthread_create(id1,NULL,ticketport1,NULL); if(ret0) { perror(creat thread1:); exit(-1); } retpthread_create(id2,NULL,ticketport2,NULL); if(ret0) { perror(creat thread2:); exit(-1); } pthread_join(id1,NULL); pthread_join(id2,NULL); return 0;}void* ticketport1(void* arg){ while(1) { sem_wait(mutex); //mutex信号量进行P操作 if(tickets0) { usleep(1000); printf(thread1 sell ticket: %d,tickets--); sem_post(full); //full信号量进行V操作 } else { sem_post(full); //full信号量进行V操作 break; } } return (void*)0;}void* ticketport2(void* arg){ while(1) { sem_wait(full); //full信号量进行P操作 if(tickets0) { usleep(1000); printf(thread2 sell ticket: %d,tickets--); sem_post(mutex); //mutex信号量进行V操作 } else { sem_post(mutex); //mutex信号量进行V操作 break; } } return (void*)0;}上面的sem_init函数用来初始化两个信号量的初始化值这里一个设为1一个设为0sem_wait类似于P操作让信号量减1如果小于结果小 于0线程阻塞否则线程继续执行sem_post类似于V操作提升信号量的值加1通过这两个信号量之间的互相“救对方”就可以实现这两个线程 的同步执行经典的生产者消费者问题只有当生产者把资源放入存储区消费者才能取得#include #include #include #include #define MAXSIZE 10int stack[MAXSIZE];int size 0;sem_t sem;void privide_data(void){ int i; for(i 0;i { stack[i] i; sem_post(sem); }}void handle_data(void){ int i; while((i size ) { sem_wait(sem); printf(cross : %d X %d %d ,stack[i],stack[i],stack[i] * stack[i]); sleep(1); }}int main(){ pthread_t privider,handler; sem_init(sem,0,0); pthread_create(privider,NULL,(void *)privide_data,NULL); pthread_create(handler,NULL,(void *)handle_data,NULL); pthread_join(privider,NULL); pthread_join(handler,NULL); sem_destroy(sem); return 0;}
http://www.pierceye.com/news/196726/

相关文章:

  • 厚街网站建设价格做办公室的网站
  • 青海做网站找谁wordpress gif缩略图
  • 手机网站全屏显示如何把自己做的网站放到微信上
  • 网站建设云雅淇wordpress
  • 工作室网站需要备案吗python基础教程编程题
  • 建设工程人才招聘信息网站响应式网站 cms
  • 设计签名免费网站福州的网站建设
  • 太原这边有做网站的吗wordpress实现pdf浏览
  • 制作微信公众号的网站开发30岁做网站运营
  • 松江手机网站开发正规免费代理
  • 太原市建设路小学网站昆山住房与城乡建设局网站
  • 石家庄的网站的公司计算机应用技术专业网站开发方向
  • 网站优化软件排行榜八年级微机网站怎么做
  • 织梦网站漏洞cms网站开发流程
  • 网站开发规划书怎么写企业cms开源
  • html网站免费下载海珠区建网站
  • 石家庄住房城乡建设厅网站宿迁网站建设推广公司
  • 广州模板网站建设费用2024新闻热点摘抄
  • 河北秦皇岛建设局网站做网站简单的软件
  • 上海网站开发外包公司最新新闻热点事件短篇
  • wordpress实现网站勋章功能网站建设需要什么资质
  • 河北沙河市建设局网站威海好的网站建设公司
  • 网站建设怎么放到云空间上海企业网站模板
  • 设计和建设企业网站心得和体会wordpress和新浪微博同步
  • 网站底部横条导航代码制造业erp系统软件有哪些
  • 网站建设公司antnw企业营销型网站制作
  • 接口网站开发wordpress安装网站无法
  • 九九9九九9视频在线观看优化网站结构一般包括
  • 网站缺点国外网站素材
  • 网站域名到期如何续费淘宝客绑定网站备案号