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

聊城做网站做的不错的网络公司新浪云wordpress

聊城做网站做的不错的网络公司,新浪云wordpress,北京最大的火车站,广东 网站建设 公司排名临界资源:可以被多个执行流(线程或者叫轻量级进程)同是访问的(多个执行流共享的,比如:全局、堆等等);临界区:访问这些临界资源的代码;原子性:没有中间态&…
  1. 临界资源:可以被多个执行流(线程或者叫轻量级进程)同是访问的(多个执行流共享的,比如:全局、堆等等);
  2. 临界区:访问这些临界资源的代码;
  3. 原子性:没有中间态,不做或者做完;

1.展示没有互斥的程序 

1.1.一个购票系统,有5个线程在购票

#include<iostream>
#include<cstdio>
#include<unistd.h>
#include<pthread.h>int tickets=100;
void* thread_run(void* args)
{int tmp=*((int*)args);while(1){if(tickets>0)//购表{usleep(10000);tickets--;printf("我是%d线程,还剩%d\n",tmp,tickets);}else{printf("没票了\n");break;}}return (void*)0;
}
int main()
{pthread_t tid[5];for(int i=0;i<5;i++)//创建5个线程{int* t=new int(i);pthread_create(tid+i,NULL,thread_run,(void*)t);}for(int i=0;i<5;i++){pthread_join(tid[i],NULL);}return 0;
}

执行结果:不是每次都会产生这样的结果 ,把票购成负数了不合理

 原理:

 2.互斥

互斥整个过程:保持临界资源的原子性

pthread_mutex_t lock;//锁

pthread_mutex_init(&lock,NULL);//初始化

pthread_mutex_lock(&lock);//加锁

//临界区

pthread_mutex_unlock(&lock);//解锁

pthread_mutex_destroy(&lock);//删除锁

 修改上面代码

#include<iostream>
#include<cstdio>
#include<unistd.h>
#include<pthread.h>pthread_mutex_t lk;//锁
int tickets=100;
void* thread_run(void* args)
{int tmp=*((int*)args);while(1){pthread_mutex_lock(&lk);//加锁if(tickets>0){usleep(10000);tickets--;printf("我是%d线程,还剩%d\n",tmp,tickets);}else{printf("没票了\n");pthread_mutex_unlock(&lk);//解锁break;}pthread_mutex_unlock(&lk);//解锁}return (void*)0;
}
int main()
{pthread_mutex_init(&lk,NULL);//初始化pthread_t tid[5];for(int i=0;i<5;i++){int* t=new int(i);pthread_create(tid+i,NULL,thread_run,(void*)t);}for(int i=0;i<5;i++){pthread_join(tid[i],NULL);}pthread_mutex_destroy(&lk);//删除锁return 0;
}

3.如何保证锁的原子性(互斥的原理)

为了实现互斥锁操作,大多数体系结构都提供了swap或exchange指令(汇编):作用是把寄存器和内存单元的数据相交换

过程:每一个线程调用lock,会先把自己上下文中关于锁的变量设为0,然后和使用一行代码(原子性)交换上下文的数据和锁的数据,锁的数据被换走变成0,其它线程来交换还是0,会挂起等待循环这个过程,直到换走数据的线程解锁为止;

 如果交换走锁数据的线程时间片到了,被调度那么它也是抱着锁走的,其他线程还是不能执行临界资源

http://www.yayakq.cn/news/655448/

相关文章:

  • 上海网站建设备案号怎么恢复黑龙江住房和城乡建设部网站
  • html5网站开发案例网站备案核验系统
  • 太原定制网站开发制作seo站内优化和站外优化
  • 天津企业网站设计哪家好wordpress旋转文字
  • 成都网站制作在线搭建网站难吗
  • asp网站开发软件抖音seo排名软件
  • 广州建筑公司招聘网站西安网站建设-中国互联
  • 江西建设信息港网站网站登录设计欣赏
  • 域名购买后如何建设网站wordpress医疗模板
  • 郴州网站建设服务企业邮箱查询
  • 企业建设网站的资金策划唐山网站制作工具
  • 平面网站设计wordpress ip_hash失效
  • 优的网站建设明细报价表网站由哪些部分组成部分组成
  • wordpress去除下划线福州网站优化公司
  • 淘宝网站建设的特点广州网站建设定制价格
  • 做网站图片用什么格式最好深圳企业网站建设设计制作方案
  • 案例剖析网站有网站加金币的做弊器吗6
  • 昆山做网站的公司有哪些加盟高端网站建设
  • 网站在哪里建立做网站的好项目
  • 馨端网站建设seo薪资水平
  • 深圳哪里有做网站的阿里巴巴外贸订单网站
  • 做搜狗网站优化排wordpress 登录小工具
  • 做网站咋不用买虚拟机wordpress增加自适应功能
  • 宜宾做网站c 网站开发案例详解百度云
  • ps网站首页直线教程wordpress自动推送工具代码
  • 黄冈商城网站建设哪家好宝坻手机网站建设
  • 做app_需要先做网站吗东莞营销型网站
  • 石基网站建设wordpress 科技联盟
  • 网站包括什么网站建设违法行为
  • 海南做公司网站seo自学教程