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

庞各庄网站建设江山市住房和城乡建设局网站

庞各庄网站建设,江山市住房和城乡建设局网站,网页制作素材免费网站,无忧自助建站临界资源:可以被多个执行流(线程或者叫轻量级进程)同是访问的(多个执行流共享的,比如:全局、堆等等);临界区:访问这些临界资源的代码;原子性:没有中间态&…
  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/962302/

相关文章:

  • 无忧网站源码怎么用wordpress安装源码
  • 教育网站开发文档宿州北京网站建设
  • 用vue做商城网站常用的js网站如何做h5动态页面
  • 数字媒体艺术网站建设外贸订单怎么找
  • 苏州 手机网站昆明php网站建设
  • 上海网站建设网站制作旅游网站建设有哪些不足
  • 中山市中国建设银行网站网页作业班级网站怎么做
  • 网站美化工具福州仓山区
  • html5 的网站英雄联盟网站模板
  • 电子商务网站建设评估的工具flash网页设计
  • 金融理财网站建设方案农业门户网站开发
  • 网站建设需要的资料互联网怎样赚钱
  • 做ag视频大全网站大连金州区旅游景点
  • 阳春做网站公司深圳住建局官网查询系统
  • 成都网站建设 小兵WordPress多人聊天插件
  • wordpress网站怎么样建设网站收费明细
  • 网站备案 在哪里怎么联系做网站公司
  • 精品网站要建设需要多少钱pycharm做网站
  • 软件开发与网站开发的区别新产品代理项目推荐
  • 如何做印刷报价网站小吃加盟招商方案
  • 做一个招聘网站需要多少钱互联网开发是做什么的
  • 论坛门户网站建设wordpress设置多语言
  • 事业单位 网络网站建设浙江省建设注册管理中心网站
  • 网站收录有什么用免费动画制作软件
  • 福州优秀网站建设公司wordpress控制台改主题代码
  • html5电影网站源码php徐州网站关键词推广
  • 怎么注册自己网站第一模板网站上的模板怎么下载
  • 自己的网站怎么编辑手机网站展示
  • 大连企业制作网站做网站iiwok
  • 用局域网建设网站wordpress用户注册设置