博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
同步异步阻塞非阻塞可中断的睡眠不可中断的睡眠
阅读量:4966 次
发布时间:2019-06-12

本文共 617 字,大约阅读时间需要 2 分钟。

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

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

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

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

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

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

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

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

转载于:https://www.cnblogs.com/axjlxy/p/9424974.html

你可能感兴趣的文章
sql server 查询分析器中表名无效,有红线,其实是这张表的
查看>>
hash 分区的用途是什么?
查看>>
linux/windows下启用和停止VMware后台服务的脚本
查看>>
在eclipse中API的封装和调用
查看>>
POJ 1330 Nearest Common Ancestors(Tree)
查看>>
小程序基础总结
查看>>
IDA Pro 数据库文件
查看>>
创建.htaccess文件
查看>>
20165305 《网络对抗技术》 Kali安装
查看>>
如何判断css是否加载完成
查看>>
MySQL数据库服务器逐渐变慢分析与解决
查看>>
C#学习-面向对象语言都有类
查看>>
故宫和雪
查看>>
易错java知识点总结(持续更新)
查看>>
01 基本数据类型
查看>>
06 文件处理
查看>>
大二暑假周进度总结02
查看>>
多线程和包
查看>>
.net实例:Asp.net把UTF-8编码转换为GB2312编码
查看>>
php foreach 语法的遍历来源数组如果不是一个有效数组php会出现错误警告 Invalid argument supplied for foreach()...
查看>>