zoukankan      html  css  js  c++  java
  • 多线程的好处

    多线程有三个好处:

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

    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
    }
    
  • 相关阅读:
    codevs1004 四子连棋
    codevs1009 产生数
    NOIP2014 寻找道路
    Tyvj1139 向远方奔跑(APIO 2009 抢掠计划)
    随机算法
    线性基
    线性基入门
    线性基 + 并查集
    欧拉公式 (平面)
    卡特兰数 + 大数
  • 原文地址:https://www.cnblogs.com/okadanana/p/5873664.html
Copyright © 2011-2022 走看看