专栏名称: 架构师之路
架构师之路,坚持撰写接地气的架构文章
目录
相关文章推荐
51好读  ›  专栏  ›  架构师之路

工作线程数究竟要设置为多少 | 架构师之路

架构师之路  · 公众号  · 架构  · 2017-07-08 12:31

正文

请到「今天看啥」查看全文


  • 多线程编码可以让 代码更加清晰 ,例如: IO 线程收发包, Worker 线程进行任务处理, Timeout 线程进行超时检测

  • 如果有一个任务一直占用 CPU 资源在进行计算,此时增加线程并不能增加并发,例如以下代码会一直占用CPU,并使得CPU占用率达到100%:

    while(1){ i++; }

  • 通常来说 Worker 线程一般不会一直占用 CPU 进行计算,此时即使 CPU 是单核, 增加 Worker 线程也能够提高并发 ,因为这个线程在休息的时候,其他的线程可以继续工作

三、常见服务线程模型

了解常见的服务线程模型,有助于理解服务并发的原理,一般来说互联网常见的服务线程模型有两种:

  • IO线程与工作现场通过任务队列解耦

  • 纯异步


IO 线程与工作线程通过队列解耦类模型


如上图,大部分 Web-Server 与服务框架都是使用这样的一种“ IO 线程与 Worker 线程通过队列解耦”类线程模型:

  • 有少数几个 IO 线程 监听上游发过来的请求,并进行收发包( 生产者

  • 有一个或者多个任务队列 ,作为 IO 线程与 Worker 线程异步解耦的数据传输通道( 临界资源

  • 有多个工作线程 执行正真的任务( 消费者


这个线程模型应用很广,符合大部分场景,这个线程模型的特点是, 工作线程内部是同步阻塞执行任务的 (回想一下 tomcat 线程中是怎么执行 Java 程序的, dubbo 工作线程中是怎么执行任务的),因此







请到「今天看啥」查看全文