1. yield表示放弃本次cpu的时间片,但是操作系统在下一个时间片依旧可能会调用该线程/进程

  2. park表示线程/进程睡眠,需要让其他线程/进程唤醒,才有可能重新被操作系统分配时间片,

  3. 非自旋锁,底层一般采用park来实现,如果用yield,在锁竞争激烈的情况下,一个线程可能一直处在 获得cpu时间片 -> 获取锁失败 -> 放弃时间片这样的循环中,线程上线文的切换频繁,浪费cpu; 所以每个锁都会有一个等待队列,线程获取锁失败后,就将自己加入等待队列中,当别的线程释放锁后,会从等待队列中挑选一个线程唤醒

最新文章

  1. 多人开发Xcode工程冲突,打不开解决办法
  2. Java垃圾回收机制 入门
  3. expect脚本
  4. c++程序开发利器
  5. linux shell sleep/wait(转载)
  6. Word Break II 解答
  7. BZOJ 1901: Zju2112 Dynamic Rankings( 树状数组套主席树 )
  8. 安装apk程序进android
  9. layoutSubviews在什么情况下会被调用
  10. wpf中ListBox的选中项与ComboBox间的绑定
  11. oracle数据库命令-持续更新
  12. Linux常用命令说明(记录自己Linux命令使用情况,后续会持续更新)
  13. linux c编程:初识进程与线程
  14. 浏览器保存数据给app读取
  15. FAQ Flyway
  16. 【Ruby】【YAML】
  17. this指针 new 和delete
  18. 20155325 Exp6 信息搜集与漏洞扫描
  19. 设计模式 笔记 抽象工厂模式 Abstract Factory
  20. iOS6新特征:UICollectionView介绍-非常棒 -转

热门文章

  1. 算法笔记刷题2(codeup 1928)
  2. Windows 切换 working directory
  3. [C语言] 获得 pwd 的几种函数
  4. Redis持久化存储(一)
  5. java 之 abstract、interface
  6. 简单的环绕散射 Simple Wrap Diffuse From GPU GEMS1
  7. Ansible 配置文件详解
  8. 前线观察 | AWS re:Invent 2018见闻实录
  9. mysql建立ssl安全连接的配置
  10. 用VC实现洪水攻击程序