zoukankan      html  css  js  c++  java
  • 同步异步阻塞非阻塞可中断的睡眠不可中断的睡眠

    同步:所有程序是按照一定逻辑先后顺序执行的,前一个代码没有执行完成,后面的代码不会执行。

    异步:程序可能有若干分支,各自的执行时间点没有约束,也不可提前预测。

    阻塞:阻塞指的是一个程序在执行的时候,没有成功获取到相应的资源(变量/标志/内存/数据等),那么就一直等待在这里循环或者睡眠等待资源可以被获取。这个时候我们一般会把阻塞的进程放到等待队列中,等待被唤醒。这个会涉及到等待队列的知识,在本章最后会讲解。

    非阻塞:非阻塞指的是程序在获取资源或者其他数据的时候没有成功,那么直接返回错误码。

    不可中断的睡眠:在上面阻塞的情况下会使用到睡眠的属性。不可被中断打断

    可中断的睡眠:在上面阻塞的情况下会使用到睡眠的属性。可被中断打断

    等待队列:进程阻塞的时候,要把进程加入到等待队列中,加入的属性有可中断,不可中断等。唤醒等待队列中的进程时,也有几个属性(全部唤醒/唤醒可中断的/唤醒若干个可中断)。其实还有一个互斥标志,也是用来唤醒等待队列中的进程用的属性。相当一个进程的特殊标志,不过一般情况下很少使用。

    等待队列实现多进程并发:等待队列可实现多进程并发:但是目前添加进程到等待队列的内核函数的现有实现方式不支持,我们需要自己去实现一下wait_event函数,都是使用原来wait_event函数内部的函数实现的,在逻辑上稍作修改。

    有时候,不小心知道了一些事,才发现自己所在乎的事是那么可笑。
  • 相关阅读:
    [BZOJ2296] [POJ Challenge] 随机种子
    [BZOJ1026] [SCOI2009] windy数 (数位dp)
    [BZOJ1306] [CQOI2009] match循环赛 (搜索)
    [BZOJ2654] tree (kruskal & 二分答案)
    [BZOJ3506] [Cqoi2014] 排序机械臂 (splay)
    [BZOJ1552] [Cerc2007] robotic sort (splay)
    [BZOJ3110] [Zjoi2013] K大数查询 (树套树)
    BZOJ3611: [Heoi2014]大工程
    BZOJ2286: [Sdoi2011]消耗战
    BZOJ3876: [Ahoi2014]支线剧情
  • 原文地址:https://www.cnblogs.com/axjlxy/p/9424974.html
Copyright © 2011-2022 走看看