高并发软件设计的几种方式

标签: 并发 软件设计 | 发表时间:2013-09-05 23:29 | 作者:gary531
出处:http://blog.csdn.net

本文就高并发软件设计中可以考虑使用的一些方法做如下总结:

 1)多线程有利于提高CPU占用率,因为软件本身的线程越多,在和系统上其他线程争夺CPU资源时就能分配到更多执行资源,同时也能提高业务处理的并发性。

 2)非阻塞IO能够在IO操作条件不成熟时不阻塞在IO调用处,返回继续其他代码的执行,过一阵再进行IO尝试。异步IO能在IO操作执行时不阻塞在IO调用处,返回继续其他代码的执行,等IO操作结束后通过信号等机制拿到通知事件,然后再继续IO操作后续执行。

 3)actor模式通过在actor间传送消息来进行同步和事件驱动,一方面使得各个actor能够最大限度的并发执行,避免了阻塞等待。另一方面降低了actor间的耦合,在actor本身业务层避免了锁的使用,从而避免了死锁、临界区访问等问题的发生。

 4)协程通过把一个线程划分成多个任务来串行执行,一方面以写同步代码容易度来达到异步代码的高效率。另一方面通常一个任务进行异步IO时要让出这个线程的执行权,进行线程切换,如果采用协程方式,在这个时候可就以把线程的执行权让给线程内的其他协程,目的也是尽量让线程在时间片用完时再切换,减少切换次数。

 

作者:gary531 发表于2013-9-5 15:29:48 原文链接
阅读:49 评论:0 查看评论

相关 [并发 软件设计] 推荐:

高并发软件设计的几种方式

- - CSDN博客架构设计推荐文章
本文就高并发软件设计中可以考虑使用的一些方法做如下总结:.  1)多线程有利于提高CPU占用率,因为软件本身的线程越多,在和系统上其他线程争夺CPU资源时就能分配到更多执行资源,同时也能提高业务处理的并发性.  2)非阻塞IO能够在IO操作条件不成熟时不阻塞在IO调用处,返回继续其他代码的执行,过一阵再进行IO尝试.

一些软件设计的原则

- 夕角 - 酷壳 - CoolShell.cn
以前本站向大家介绍过一些软件开发的原则,比如优质代码的十诫和Unix传奇(下篇)中所以说的UNIX的设计原则. 相信大家从中能够从中学了解到一些设计原理方面的知识,正如我在《再谈“我是怎么招聘程序”》中所说的,一个好的程序员通常由其操作技能、知识水平,经验层力和能力四个方面组成. 在这里想和大家说说设计中的一些原则,我认为这些东西属于长期经验总结出来的知识.

好的程序员做不出好的软件设计

- Jacky - cnBeta.COM
你不能看到一个程序员还不错,就把他推到系统分析师、软件设计师或软件架构师的位置上. 如果你在团队或公司里寻找一个能胜任软件架构师或设计师这样重要位置的人时,首先出现在脑子里的想法通常是在程序员中选一个最好的. 这样的位置不是随意的找个不错的程序员就能胜任的. 把你最资深的程序员晋升到这个位置也未必就合适.

美国YP iPad 软件设计经验分享

- - 腾讯CDC
  前言:前几天按照习惯对自己以前负责的设计项目做总结,发现AT&T已经把YP iPad版本从Appstore浏览类挪动到旅行类了. 公司做出了合理的商业计划改变,让YP能适用到更准确的种类里,赞. 同时也意味着这个设计项目进入了另外一个阶段. 这里想总结一下这个项目,是我第一个上线的iPad设计项目,是我第一个在AT&T的设计项目,也是至今我所有设计项目中在Appstore种类排名第一最长时间的项目:11个月.

软件设计之UML—UML中的六大关系

- - BlogJava-首页技术区
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency). 1.1、 继承关系—泛化(Generalization). 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中用extends关键字.

20个设计模式和软件设计面试问题

- - ImportNew
不管是参加Java面试还是C#面试,. 设计模式和软件设计都是任何编程面试中的必问问题. 实际上,编程能力和设计技巧是对彼此很好的补充. 一个好的程序员通常都是一个好的软件设计人员. 他们知道怎么把一个问题分割成一段段代码或者软件设计,但这些能力和技巧并不能凭空而来. 你需要持续做大型、小型系统的设计和编码,并且不断从错误中学习.

【外刊IT评论网】好的程序员做不出好的软件设计

- Shengbin - 外刊IT评论网
本文是从 Good Programmers Make Bad Designers 这篇文章翻译而来. 你不能看到一个程序员还不错,就把他推到系统分析师、软件设计师或软件架构师的位置上. 如果你在团队或公司里寻找一个能胜任软件架构师或设计师这样重要位置的人时,首先出现在脑子里的想法通常是在程序员中选一个最好的.

[转][转]微信、陌陌等著名IM软件设计架构详解

- - heiyeluren的blog(黑夜路人的开源世界)
对微信、陌陌等进行了分析,发出来分享一下(时间有些久了). 有兴趣的同学可以加入群:369511307. 电量:对于移动设备最大的瓶颈就是电量了. 因为用户不可能随时携带电源,充电宝. 那就要检查我们工程是不是有后台运行,心跳包发送时间是不是合理. 流量:对于好多国内大部分屌丝用户来说可能还是包月30M,那么我们必须站在广大用户角度来考虑问题了.