多线程编程(1)背景介绍

电脑杂谈  发布时间:2020-04-06 23:05:36  来源:网络整理

线程编程主进程_多线程编程之一——问题提出_多线程编程之一——问题提出

在出现多线程(MT)编程之前多线程编程之一——问题提出,计算机程序的执行由单个步骤序列组成,这些步骤在主机CPU中以同步顺序执行. 无论任务本身需要分步执行,还是整个程序实际上包含多个子任务,都需要按此顺序执行. 因此,如果这些子任务彼此独立并且没有因果关系(也就是说,每个子任务的结果不影响其他子任务的结果),这是否更合逻辑?如果这些独立任务同时执行怎么办?显然,这种并行处理方法可以显着提高整个任务的性能. 这是多线程编程.

多线程编程之一——问题提出_多线程编程之一——问题提出_线程编程主进程

多线程编程非常适合具有以下编程特征的任务: 它本质上是异步的,需要多个并发活动;每个活动的处理顺序可能是不确定的,也可能是随机的,不可预测的. 这样的编程任务可以被组织或划分为多个执行流程,其中每个执行流程都有一个指定要完成的任务. 根据应用程序的不同,可能需要计算这些子任务之间的中间结果,然后将其合并到最终输出中.

线程编程主进程_多线程编程之一——问题提出_多线程编程之一——问题提出

计算密集型任务可以轻松地分为多个子任务,然后依次执行或以多线程方式执行. 使用单个线程来处理多个外部输入源的任务并不是那么简单. 如果不使用多线程,则要实现这种编程任务,需要为串行程序使用一个或多个计时器,并实现一个多路复用方案.

线程编程主进程_多线程编程之一——问题提出_多线程编程之一——问题提出

一个串行程序需要检查每个I / O终端通道的用户输入;但是多线程编程之一——问题提出,在读取I / O终端通道时程序不能阻塞非常重要,因为用户的输入到达时间不确定,并且阻塞会阻止其他I / O通道的处理. 串行程序必须使用非阻塞I / O或带计时器的阻塞I / O(以确保阻塞只是暂时的).

线程编程主进程_多线程编程之一——问题提出_多线程编程之一——问题提出

由于串行程序只有一个执行线程,因此它必须考虑到需要执行的多个任务,以确保其中一个任务不会占用太多时间并合理分配用户的响应时间. 使用此类任务的串行程序通常会导致非常复杂的控制流,难以理解和维护.

使用多线程编程和诸如队列之类的共享数据结构,可以将该编程任务计划为执行特定功能的多个线程.

使用多线程来计划此类编程任务可以降低程序的复杂性,并使其实现更加清晰,高效和简洁. 每个线程中的逻辑并不复杂,因为它只有一个特定的工作要完成. 例如,UserRequsetThread的功能只是读取用户输入,然后将数据放入队列中,以提供其他线程进行后续处理. 每个线程都有自己的明确分配. 您只需要设计每种类型的线程就可以完成一件事情并做好. 此特定任务线程的使用类似于汽车工厂的装配线.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-166376-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 王可可
        王可可

        都可以自由的通过美国的任何海域

      • 朱伟
        朱伟

        我记得那时俺年轻

      热点图片
      拼命载入中...