并发编程挑战

并发编程挑战

1. 上下文切换

关键词:Lembench3(测量上下文切换时长)
	  vmstat(测量上下文切换次数,CS)
 问题:如何减少上下文切换?
 	1.无锁并发编程
 	2.CAS算法。java的Atomic包使用CAS算法更新数据,不需要加锁
 	3.使用最少线程
 	4.协程。在单线程里实现多任务调度。eg:单线程维持多个任务间的切换

2. 死锁

关键词:dump线程
问题:避免死锁常见方法有哪些?
	1.避免一个线程同时获取多个锁
	2.避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源
	3.尝试使用定时锁,使用lock.tryLock(timeout)来替代使用内部锁机制
	4.对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况

3. 资源限制

关键词:集群,资源池
问题:什么是资源限制?
	1.程序的执行速度受限于计算机硬件资源或软件资源。

问题:资源限制会引发什么问题?
	1.资源限制导致原本并发执行的程序反复调动资源,增加了上下文切换和资源调度的时			  间,从而导致多线程任务执行速度甚至低于单线程

问题:如何解决资源限制问题?
	1.硬件资源限制------>集群并发,服务器集群
	2.软件资源限制------>资源池复用资源

问题:在资源限制的情况下进行并发编程
	1.根据不同的资源限制调整程序并发度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值