线程模型
空杯心态_虚怀若谷
空杯心态_虚怀若谷
展开
-
Leader/Follower线程模型简介
(1)线程有3种状态:领导leading,处理processing,追随following;(2)假设共N个线程,其中只有1个leading线程(等待任务),x个processing线程(处理),余下有N-1-x个following线程(空闲);(3)有一把锁,谁抢到就是leading;(4)事件/任务来到时,leading线程会对其进行处理,从而转化为processing状态,处理完成之后,又转变为following;(5)丢失leading后,following会尝试抢锁,抢到则变为leadin原创 2016-06-27 17:03:08 · 228 阅读 · 0 评论 -
半同步半异步I/O简介
同步模式编程简单,但是I/O的利用利率低;而异步模式编程复杂,但是I/O利用率高。综合同步异步的有优点,就有了半同步半异步的设计模式。这个模式中,高层使用同步I/O模型,简化编程。低层使用异步I/O模型,高效执行。half sync/half async可以很好的使得"变成复杂度"和"执行效率"之间达到一种平衡.半同步半异步模式在下面的场景中使用:系统必须响应和原创 2016-06-27 17:17:27 · 115 阅读 · 0 评论 -
select、poll、epoll之间的区别总结
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。转载 2016-06-29 12:00:19 · 166 阅读 · 0 评论 -
ThreadPoolExecutor的corePoolSize和maximumPoolSize
按照JDK文档的描述,如果池中的实际线程数小于corePoolSize,无论是否其中有空闲的线程,都会给新的任务产生新的线程如果池中的线程数>corePoolSize and 如果池中的线程数=maximumPoolSize,则有空闲线程使用空闲线程,否则新任务放入workQueue。(线程的空闲只有在workQueue中不再有任务时才成立)ThreadPoolExecutor中有转载 2016-07-11 21:40:04 · 332 阅读 · 0 评论 -
Linux历史上线程的3种实现模型
一.概述 这里以Linux为例。Linux历史上,最开始使用的线程是LinuxThreads,但LinuxThreads有些方面受限于内核的特性,从而违背了SUSV3 Pthreads标准。即它要根据内核的特性来实现线程,有些地方没有遵循统一的标准。后来IBM开发了NGPT(Next Gene转载 2017-03-18 21:39:57 · 126 阅读 · 0 评论 -
Nginx/Netty/ZeroMQ网络模型
突发奇想,想写一篇综合性的,就算算是对到现在为止读过的框架这方面的一个总结吧,先来点客套话吧,嗯,为啥会有线程或者进程模型这种东西,因为计算机CPU主频已经很难再提高了,现在更倾向于设计多核系统,那么要发挥现在计算机的处理能力,就需要将系统设计成支持多处理器的,最简单的那肯定就是多线程(进程)程序了。。。尤其是在网络编程中,特别是对于每个事物都是独立的情况下,例如没有会话的HTTP请求啥的转载 2017-05-10 13:20:33 · 216 阅读 · 0 评论