1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。1...
分类:
编程语言 时间:
2014-09-17 00:54:21
阅读次数:
413
本篇文章主要是我今天阅读memcached源码关于进程启动,在网络这块做了哪些事情。
一、iblievent的使用
首先我们知道,memcached是使用了iblievet作为网络框架的,而iblievet又是单线程模型的基于linux下epoll事件的异步模型。因此,其基本的思想就是 对可读,可写,超时,出错等事件进行绑定函数,等有其事件发生,对其绑定函数回调。
...
分类:
其他好文 时间:
2014-09-15 01:08:38
阅读次数:
352
本篇文章主要是我今天阅读memcached源码关于进程启动,在网络这块做了哪些事情。
一、iblievent的使用
首先我们知道,memcached是使用了iblievet作为网络框架的,而iblievet又是单线程模型的基于linux下epoll事件的异步模型。因此,其基本的思想就是 对可读,可写,超时,出错等事件进行绑定函数,等有其事件发生,对其绑定函数回调。
...
分类:
编程语言 时间:
2014-09-15 01:08:28
阅读次数:
540
当应用启动,系统会创建一个主线程,也叫UI线程,系统对每个UI组件的调用事件都在UI线程中分发出去,而不会为每个UI单独建立线程,这种单线程模型有两个准则:不要阻塞UI线程不用再UI线程之外访问Android UI下面方法可以将执行放在UI线程,但不常用Activity.runOnUiThread(...
分类:
移动开发 时间:
2014-09-12 22:03:24
阅读次数:
346
前面关注的地方都是Netty采用的流水线处理方式的组织方式,ChannelHandler如何管理,通道状态,通道事件等这些上层的架构设计,那么Netty中如何实现诸如套接字绑定,连接,关闭等这些底层的操作呢?不能只顾着套用API写程序,却对细节不求甚解。这里大致追踪下OIO模式下Channel中套接字绑定的实现,(NIO以后分析)其实逻辑都是一样的,只是在线程模型的地方时不同的。
大致过程如下(...
分类:
Web程序 时间:
2014-09-12 17:10:13
阅读次数:
175
由于工作并不是很忙,闲暇之余就读了下tomcat的源代码。我是从事java服务器开发工作的,大体的一些服务器线程模型我都是了解的。其大部分都是由一个线程调用监听端口等待客户端的链接,建立连接后再交由其他的线程负责具体的网络io操作。可tomcat居然是用多个线程调用同一个ServerSocket.....
分类:
其他好文 时间:
2014-09-05 22:15:32
阅读次数:
319
相对于传统的线程模型,Node.js开发与传统模型之间的主要区别是围绕着事件模型。相对于传统的线程模型,框架在基于事件的程序设计中管理的是控制流。在传统模型里,开发者必须在控制流中仔细处理模型中的流程,主动编写控制流向及返回的代码,要完全了解任务执行完后应该如何继续下面的流程。而对循环进行完全控制的...
分类:
Web程序 时间:
2014-09-03 14:34:06
阅读次数:
272
背景:Redis始于一个意大利创业公司Merzia,创始人SalvatoreSanfilippo以及另外一名主要代码贡献者PieterNoordhuis目前在VMware,全职开发Redis。Redis代码托管在Github上。Redis在性能上是单线程模型,而Memcached支持多线程,所以在多核服务器上后者的性能更高一些,然而Redi..
分类:
其他好文 时间:
2014-09-01 02:52:53
阅读次数:
267
1. 阻塞I/O通信模型1.性能:一连接一线程模型导致服务端的并发接入数和系统吞吐量受到极大限制2.可靠性:由于IO操作采用同步阻塞模式,当网络拥塞或者逻辑处理缓慢会导致IO线程被挂住,阻塞时间无法预测3.可维护性:IO线程数无法有效控制、资源无法有效共享(多线程并发问题),系统可维护性差2.异步、...
分类:
编程语言 时间:
2014-08-31 18:38:51
阅读次数:
308
1) greenlet - python中的协程库
1.1) 什么是协程 (Coroutine)
Coroutine Wiki
http://en.wikipedia.org/wiki/Coroutine
CoRoutine是在Thread基础上的再次切分. 每一个Process可以包含多个Thread, 每个线程包含多个CoRoutine在任何时刻, 同一个Threa...
分类:
编程语言 时间:
2014-08-27 18:51:38
阅读次数:
266