频道栏目
首页 > 程序开发 > 综合编程 > 其他综合 > 正文
并发编程的挑战
2017-01-23 09:32:00         来源:u010571316的专栏  
收藏   我要投稿

1、如何减少上下文的切换

(1)无所并发编程。多线程竞争时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的id按照hash算法取模分段,不同的线程处理不同段的数据。

(2)CAS算法。compare and set 算法。java的atomic包使用cas算法来更新数据,而不需要加锁。

(3)使用最少的线程。避免创建不需要的线程

(4)协程。在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。

使用vmstat命令可以测量上下文切换的次数。

2、避免死锁的几个常用的方法

(1)避免一个线程同时获取多个锁。

(2)避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。

(3)尝试使用定时锁,使用lock.tryLock(timeOut)来替代内部锁的机制。

(4)对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况。

点击复制链接 与好友分享!回本站首页
上一篇:Nginx源码阅读(ngx_hash_t)
下一篇:子网掩码的新思路
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站