线程同步
来源:互联网 发布:map添加数据 编辑:程序博客网 时间:2024/06/11 19:58
什么是线程同步
线程同步的真实意思和字面意思恰好相反。
线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一个对共享资源进行操作,而不是同时进行操作。
为什么线程同步
线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。
当多个线程同时读写同一份共享资源的时候,可能会引起冲突。这时候,我们需要引入线程“同步”机制,即各位线程之间要有个先来后到,不能一窝蜂挤上去抢作一团。
怎么线程同步
进程中线程同步的四种常用方式
1. 临界区(CCriticalSection)
多个线程访问一个独占性共享资源时,可以使用临界区对象
拥有临界区的线程可以访问被保护起来的资源或代码段
2、 事件(CEvent)
允许一个线程在处理完一个任务后,主动唤醒另外一个线程执行任务
防止他人进入的简单方法,就是门口加一把锁。先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去
3. “互斥锁”
防止多个线程同时读写某一块内存区域
还有些房间,可以同时容纳n个人,比如厨房
某些内存区域,只能供给固定数目的线程使用
就是在门口挂n把钥匙。进去的人就取一把钥匙,出来时再把钥匙挂回原处。后到的人发现钥匙架空了,就知道必须在门口排队等着了。
4. 信号量”
用来保证多个线程不会互相冲突
1)wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
(2)sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的
唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级
(4)notityAll ():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,
而是让它们竞争
https://zhidao.baidu.com/question/327685723.html
阅读全文
0 0
- 线程同步--线程同步--线程同步--线程同步--线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- 线程同步
- Xpath语法与lxml库的用法
- C实现moore边界跟踪算法
- 【数位DP+记忆化搜索】不要62 HDU
- javax.xml.parsers.ParserConfigurationException: Feature 'http://apache.org/xml/features/xinclude' is
- 设计模式 -- 行为型模式
- 线程同步
- 矩阵连乘问题(dp)
- Sysbench安装和使用
- troubleshooting之解决YARN队列资源不足导致的application直接失败
- HTTP状态码
- Markdown烂笔头文档切换编辑器之始
- 粘包这个鬼东西
- 数据挖掘算法(二)--决策树
- 解决BMap is not defined?