zoukankan      html  css  js  c++  java
  • 多线程上下文切换

    并发编程的目的是为了让程序运行的更快,但并不是启动更多的线程就能让程序最大限度地并发执行。

    在进行并发编程时,会面对很多问题:上下文的切换、死锁、受限硬件和软件的资源限制问题。

    什么事上下文的切换

    即使是单核的cpu也支持多线程执行代码,CPU通过给每个线程分配CPU资源来实现这个机制。时间片是CPu分配给各个线程的时间,时间非常的短,所以CPU通过不停地切换线程执行,让我们感觉多个线程同时执行。时间片一般为几十毫秒。

    CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下一次切换回这个任务,可以再加载这个任务。

    从任务保存到再加载的过程就是一次上下文的切换。

    **上下文切换和线程的创建有时间的开销.

    如何减少上下文的切换:

    1. 无锁并发编程:采用一些方式避免使用锁
    2. CAS算法
    3. 避免创建不需要的线程
  • 相关阅读:
    原创 动态卷积
    BZOJ1565 植物大战僵尸
    BZOJ1143 [CTSC2008] 祭祀river
    BZOJ3438 小M的作物
    BZOJ3144 [HNOI2013]切糕
    BZOJ2039 [2009国家集训队]employ人员雇佣
    BZOJ1066[SCOI2007]蜥蜴
    BZOJ3874 codevs3361 宅男计划
    Codeforces Round #343 (Div. 2)
    [转]后缀自动机(SAM)
  • 原文地址:https://www.cnblogs.com/L-a-u-r-a/p/8572428.html
Copyright © 2011-2022 走看看