美文网首页
线程,限制的异步操作

线程,限制的异步操作

作者: 米来MiLai | 来源:发表于2019-11-13 22:57 被阅读0次

限制的异步操作

系统占用情况

异步的计算限制操作要用其他线程执行,比如拼写检查,语法检查,音频转码等,为了设计和实现可伸缩性的、响应灵敏和可靠的应用程序和组件,线程池在多个CPU内核上调度任务,使多个线程能并发工作,从而高效率地使用系统资源,同时提升应用程序的吞吐能力。

理解脑图中线程的异步操作能力,不外乎与计算机处于缜密计算I/O操作,使用线程池,最大效率的使用计算机资源,并行处理能力。同时避免用户模式与内核模式的上下文切换带来的性能损失,从而导致大量线程处于闲置等待,而浪费系统资源。

掌握线程池的用途、开销之外,最重要的还是以线程池管理,才能更好的控制不可预测的错误,并加以治之。

线程池管理

要想合理地配置线程池,就必须首先分析任务特性,可以从以下几个角度来分析。

  • 任务的性质:CPU密集型任务、IO密集型任务和混合型任务。
  • 任务的优先级:高、中和低。
  • 任务的执行时间:长、中和短。
  • 任务的依赖性:是否依赖其他系统资源,如数据库连接。
  • 性质不同的任务可以用不同规模的线程池分开处理。

CPU密集型任务应配置尽可能小的线程,如配置Ncpu+1个线程的线程池。由于IO密集型任务线程并不是一直在执行任务,则应配置尽可能多的线程,如2*N cpu。混合型的任务,如果可以拆分,将其拆分成一个CPU密集型任务 和一个IO密集型任务,只要这两个任务执行的时间相差不是太大,那么分解后执行的吞吐量将高于串行执行的吞吐量。如果这两个任务执行时间相差太大,则没必要进行分解。建议使用有界队列。

I/O bound 指的是系统的CPU效能相对硬盘/内存的效能要好很多,此时,系统运作,大部分的状况是 CPU 在等 I/O (硬盘/内存) 的读/写,此时 CPU Loading 不高。

CPU bound 指的是系统的 硬盘/内存 效能 相对 CPU 的效能 要好很多,此时,系统运作,大部分的状况是 CPU Loading 100%,CPU 要读/写 I/O (硬盘/内存),I/O在很短的时间就可以完成,而 CPU 还有许多运算要处理,CPU Loading 很高。

相关文章

  • 线程,限制的异步操作

    限制的异步操作 异步的计算限制操作要用其他线程执行,比如拼写检查,语法检查,音频转码等,为了设计和实现可伸缩性的、...

  • 线程,同步构造

    基元同步构造 在介绍了线程的基本概念和限制的异步操作之后,提出多线程,线程池的概念,就不得不提到线程安全、基元用户...

  • 同步与异步 & 阻塞与非阻塞

    上篇说了线程,进程,cpu,内存,硬盘之间的关系,这篇说下异步和线程 异步 因为异步操作无须额外的线程负担,并且使...

  • WPF多线程UI更新——两种方法

    前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错...

  • 线程池

    功能 当执行大量异步任务时线程池能够提供很好的性能。 线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数...

  • 多线程与并发(一):线程的基本概念和用法

    本篇知识点 线程创建 线程重要api 线程状态 应用方面异步调用:主线程执行期间,其他线程异步执行耗时操作提高效率...

  • Day04-Dart-基础语法三:异步

    概述 Dart的异步模型 Dart的异步操作 Dart的异步补充 一、Dart的异步模型 1.1、Dart是单线程...

  • Android之异步、消息、通知、菜单

    异步、消息、通知、菜单 异步任务---AsyncTask 为什么要异步任务 Android单线程模型 耗时操作放在...

  • 异步任务-- AsyncTask

    一、为什么要异步任务?Android单线程模型耗时操作放在非主线程中 二、异步加载最常用的两种方式多线程/线程池A...

  • ios 中多线程同步之信号量

    1 需求: 开启两个主要异步线程,两个异步线程内部又得分别开启一个异步线程和其他耗时操作,最后还有第三个线程,这第...

网友评论

      本文标题:线程,限制的异步操作

      本文链接:https://www.haomeiwen.com/subject/cczpbctx.html