yield与park的区别
2024-09-04 13:12:12
yield表示放弃本次cpu的时间片,但是操作系统在下一个时间片依旧可能会调用该线程/进程
park表示线程/进程睡眠,需要让其他线程/进程唤醒,才有可能重新被操作系统分配时间片,
非自旋锁,底层一般采用park来实现,如果用yield,在锁竞争激烈的情况下,一个线程可能一直处在 获得cpu时间片 -> 获取锁失败 -> 放弃时间片这样的循环中,线程上线文的切换频繁,浪费cpu; 所以每个锁都会有一个等待队列,线程获取锁失败后,就将自己加入等待队列中,当别的线程释放锁后,会从等待队列中挑选一个线程唤醒
最新文章
- 多人开发Xcode工程冲突,打不开解决办法
- Java垃圾回收机制 入门
- expect脚本
- c++程序开发利器
- linux shell sleep/wait(转载)
- Word Break II 解答
- BZOJ 1901: Zju2112 Dynamic Rankings( 树状数组套主席树 )
- 安装apk程序进android
- layoutSubviews在什么情况下会被调用
- wpf中ListBox的选中项与ComboBox间的绑定
- oracle数据库命令-持续更新
- Linux常用命令说明(记录自己Linux命令使用情况,后续会持续更新)
- linux c编程:初识进程与线程
- 浏览器保存数据给app读取
- FAQ Flyway
- 【Ruby】【YAML】
- this指针 new 和delete
- 20155325 Exp6 信息搜集与漏洞扫描
- 设计模式 笔记 抽象工厂模式 Abstract Factory
- iOS6新特征:UICollectionView介绍-非常棒 -转