多线程的好处

多线程有三个好处:

  • 更好的资源分配
  • 有些情况下,程序设计更简单
  • 程序的性能提高

Better resource utilization

假设有一个应用用来读取磁盘里的文件并处理。读取文件需要5秒,处理文件需要2秒。如果需要读取、处理两个文件,在单线程的清下,时间消耗为

5秒用来读取文件 A
2秒用来处理文件 A
5秒用来读取文件 B
2秒用来处理文件 B

=========================

总共花费 5 + 2 + 5 + 2 = 14秒

如果使用两个线程来处理

5秒用来读取文件 A
5秒用来读取文件 B + 2秒用来处理文件 A
2秒用来处理文件 B

=========================

总共花费 5 +5 + 2 = 12秒

在单线程的情况下,从磁盘读取文件的时候,CPU什么事情都干不了,只能等待读取完毕。如果在多线程的情况下,可以在文件A读取完毕的时候,取出一个线程处理文件A,另外一个线程去读取文件B。这样就可以加快程序的运行速度。

Simpler Program Design

如果采用单线程来实现上述的需求,需要同时关注文件的读取和处理状态。相反,如果使用两个线程,每个线程只处理一个文件就行了。程序设计更简单。

More responsive programs

如果有一个服务器,负责接收请求并处理请求。在单线程的情况下,只能是接受请求并处理完请求才能接受下一个请求,在处理请求的过程中,如果有下一个请求过来的话,这个请求只能等待

while (server is active) {
	listen for request
	process request
}

如果是多线程,可以使用监听线程负责接收请求,接收到请求之后转发给工作线程去处理,监听线程立马返回去继续监听请求

while (server is active) {
	listen for request
	hand request to worker thread
}
posted @ 2016-09-14 22:11  勇敢的少年啊  阅读(405)  评论(0编辑  收藏  举报