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

线程,限制的异步操作

作者: 米来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 很高。

    相关文章

      网友评论

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

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