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

百度云平台建设网站东莞做网站优化

百度云平台建设网站,东莞做网站优化,成都微信小程序,网站内容页怎么设计模板线程锁的必要性比如一个多线程抢票程序,tickets作为临界资源,所有的线程都要对它进行判断ticket是否大于0,以及ticket–的操作。用ticket–操作举例,虽然他看起来是一行C语言的代码,但是实际上它的底层汇编经历了三个阶…

线程锁的必要性

比如一个多线程抢票程序,tickets作为临界资源,所有的线程都要对它进行判断ticket是否大于0,以及ticket–的操作。用ticket–操作举例,虽然他看起来是一行C语言的代码,但是实际上它的底层汇编经历了三个阶段,分别是load命令,减法命令,以及store命令。

由于线程是不断在切换的,因此一个线程在执行完load命令之后,很可能还没来得及做减法或者写回操作,就被切走了。CPU开始执行下一个线程。所以就会出现tickets为负数的情况。

锁的原理

我们发现,tickets是所有线程都可以看到的资源,因此是临界资源。而锁也是所有线程都可以看到的资源,那么为什么它不会造成线程安全问题呢?这是因为加锁和解锁的过程是原子性的。它的关键在于:只使用一条汇编,就将内存中的数据和CPU寄存器中的数据进行交换了。

进程终止

进程终止时系统不会自动释放所持有的互斥锁、读写锁和Posix信号量,进程终止时内核总是自动清理的唯一同步锁类型是fcntl记录锁。System V信号量,应用程序可以选择进程终止时内核是否自动清理某个信号量。

要理解这一过程,首先要理解上下文数据的概念。其实就是线程被切换后它的PCB中保存着执行的数据。

当线程A到来时,假设它要抢锁,目前其他线程没有它来的快。它的寄存器al的数据现在是0,执行交换操作,将内存中mutex的值交换给A的寄存器al中,此时线程A的al值为1,内存中mutex的值为0。

当线程A被切换走时(是带着上下文数据1一起被切走的),线程B到来,它的al寄存器中的值为0(线程设置的是自己的上下文数据,互相不冲突),进行交换mutex的值和al寄存器的值(0和0交换),最终B拿到的值是0,发生挂起等待。此时就可以根据每个线程的al中寄存器的值判断是哪一个线程抢到了锁,从而只允许该线程访问临时资源。当A访问完资源后,释放锁,唤醒等待的线程,并将mutex的值置为1。

注意,拿到锁的A在访问临时资源的时候还是会被切换的,只不过其他线程此时无法访问临时资源。

站在其他线程的视角,要么A没有申请锁不能访问临界资源,要么A申请锁了访问了临界资源。因此线程A访问临界资源的动作具有原子性。

线程终止

(1)一个线程也可以在持有某个互斥锁期间终止,自己调用pthread_exit或被另一个线程取消。如果线程调用pthread_exit资源终止时,这时它应该知道自己还持有一个互斥锁(对于程序员来说),如果是被另一个线程取消的情况,线程可以安装清楚处理程序(pthread_cleanup_push),在被取消时调用来释放相应的锁。

(2)对于线程意外操作导致进程终止的情况,就和进程终止时相同。

http://www.ds6.com.cn/news/86796.html

相关文章:

  • 百度网站推广公司seo标题优化
  • 深圳龙岗区邮编广州seo关键词优化费用
  • 电商网站支付方案营销型网站推广方案
  • 阿里巴巴网站怎么做重庆seo教程搜索引擎优化
  • 提供微网站制作多少钱关键词搜索推广
  • 北京网站建设公司分享网站改版注意事项搜索引擎优化论文
  • 想做个app软件需要什么条件百度seo公司电话
  • 华宁县住房和城乡建设局网站国际新闻今天最新消息
  • 什么是网络广告营销青岛seo关键词排名
  • 建站小程序编辑器闪亮登场云南省最新疫情情况
  • 个人怎么做微信公众号和微网站seo排名关键词搜索结果
  • 泰安吧seo的定义
  • 楼盘网官网搜索引擎排名优化seo课后题
  • 河南省建设厅网站地址淘宝运营团队怎么找
  • 许昌做网站汉狮网络seo专业知识培训
  • 代做底单的网站免费网站流量统计
  • 做网站一年赚多少钱网络营销推广方案策划书
  • 网站建站哪个公司好一点官方百度平台
  • 2015做哪个网站能致富武汉网站推广公司排名
  • 网站建设人员分布国内电商平台有哪些
  • wordpress站外链接跳转页面镇江网站
  • 官方网站建设公司排名内部优化
  • 公司做网站一般多少钱seowhy官网
  • html5做图网站竞价账户托管哪家好
  • 凡科网怎么创建网站微信指数怎么看
  • 有网站怎样做推广网页制作软件有哪些
  • 网站分析总结百度最新版app下载安装
  • 古楼角网站建设保定关键词优化软件
  • wordpress zend香港seo公司
  • 日本做暖暖的网站磁力岛引擎