首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈堵塞程序的理解

这里只做一个简单的介绍: 同步、异步分为一组概念; 堵塞堵塞分为一组概念; (同步、异步):关注的是:数据的接收方式 (堵塞堵塞):关注的是:是否等待结果返回 这是两个分组(因为它们的关注点不同...) 但是往往同步跟堵塞是一起的,异步跟堵塞是一起的。...当A连接进来,accept到,然后开始fread从缓冲区读取数据。 堵塞住了,进程执行暂停,等待数据结果。 此时B连接进来,因为进程已经被堵塞住,所以无法被accept,更无法读取、发送数据。...,程序同步、异步、堵塞堵塞是相对的,需要按功能点和模块来分析。...同步和异步是指决定结果返回的接收方式 堵塞堵塞是指是否需要等待结果返回 如果发生磁盘IO等操作,因为CPU执行速率和总线信号传递、磁盘速率的不对等,CPU如果堵塞等待读取结果,就不能最大化地利用机器资源

66530
您找到你想要的搜索结果了吗?
是的
没有找到

同步、异步、堵塞堵塞和函数调用及IO之间的组合概念

比如“同步”和“异步”就是相对的概念,因为我们从来不会说这是一个“同步异步……”;同样“堵塞”和“堵塞”也是一对相对的概念,我们也不会说那是一个“堵塞堵塞……”。.../堵塞         假如我们只有上述知识,还是很难将“同步”和“堵塞”分清楚,也不太能说清“异步”和“堵塞”的区别。...其大意是“同步I/O”要求过程堵塞直到I/O操作完成。后面我们会讲到,即使使用O_NONBLOCK修饰的I/O,也会因为在调用read等函数时,需要等待内核层把读取的数据运输到用户层。...可见“同步调用”是由“堵塞的调用”和“堵塞的调用”组成,其过程可以没有“堵塞的调用”,但是必须至少有一个“堵塞的调用”。而“异步调用”和“堵塞调用”则可以视为一个意思。...堵塞I/O                堵塞I/O是默认的I/O类型,因为它不需要使用O_NONBLOCK去修饰。以I/O读取为例,在用户态read函数会一直等待内核态返回结果。

1.9K20

Python 开发web服务器,socket堵塞模式

为了节省这个资源,可以采用堵塞的方式来进行socket等待监听,就是每次轮询监听一下,并不会堵塞等待。...修改为堵塞方式 首先修改socket为堵塞模式,并且创建一个专门用来存放client_socket的list ” # 设置堵塞模式 server_socket.setblocking...这是因为在循环堵塞的过程中,client_socket执行之后就会关闭,但是由于是提前存入list组中,然后再次循环的时候,就会重复执行同一个client_socket,导致client_socket...处理循环调用client_socket 运行效果如下: 那么到了这里已经完成了堵塞的web服务了。但是这里面还有一个比较不好的性能问题,下次再讨论吧。...html文件内容 file_name = file_path # 设置读取的文件路径 f = open(file_name,"rb") # 以二进制读取文件内容

46510

Java串口编程:串口数据的发送与监听读取「建议收藏」

串口编程的API包# 目前比较常见的针对Java的串口包有3个来源:一是1998年SUN发布的串口通信API:comm2.0.jar(Windows环境下)和comm3.0.jar(Linux/Solaris...## 从串口COM11发送的数据最终将到达与其连通的串口COM21,如果COM21处于可用状态,则到达的数据将被缓存,等待程序的读取。...从串口读入数据有多种模式,本文将介绍“轮询模式”和事件监听模式。   “轮询模式”是指程序(线程)每隔固定的时间就对串口进行一次扫描,如果扫描发现串口中有可用数据,则进行读取。...= new byte[1024]; //记录已经到达串口COM21且未被读取的数据的字节(Byte)数。...,当有数据到达串口的时候就会触发事件,在事件的响应方法中读取串口接收到的数据。

5.8K20

Linux基础(串口编程)

虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接通常特指那些与RS-232标准兼容的硬件或者调制解调器的接口。废话少讲,今天来解剖使用串口时的编程代码细节。...上面的代码是使用串口的第一步,来解释下都是啥意思。...来瞧瞧: 第21-22行,定义了一个用来配置串口属性的结构体: struct termios serial; bzero(&serial, sizeof(serial)); 第24行,将串口设置为raw...关闭奇偶校验 serial.c_cflag &= ~CSTOPB; // 关闭停止位 第33、36行,刷新掉接收到的数据并忽略掉他们: tcflush(fd,TCIFLUSH); 第34-35行,设置规范模式下的超时时长和最小字符数...); 当然,上面的 fd 就是系统中的某一个你想要设置的成上面那样的属性参数的串口,比如就拿粤嵌GEC210开发板来说,他有四个串口,其中第一个就已经被用于终端控制了,那我们可以打开第二个串口来设置:

12.8K20

Linux 查看本机串口方法

最近在了解嵌入式方面的知识,就随笔记录一下: 查看Linux本机串口: 1、查看串口是否可用    可以对串口发送数据比如对com1口,echo /dev/ttyS0 2、查看串口名称使用    ls...-l /dev/ttyS*   一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS*,一般ttyS0对应com1,ttyS1对应com2,当然也不一定是必然的; 3、...查看串口驱动    cat/proc/tty/drivers/serial 4、查看串口设备    dmesg | grep ttyS* 5、查一下板子上的串口有没有设备    grep tty/proc.../dev下应该有一个USB串口:/dev/ttyUSB0. 当一个串行卡或数据卡被侦测到时,它会被指定成为第一个可用的串行设备。...PC上的串口一般是ttyS,板子上Linux串口一般叫做ttySAC; 串口使用: 如果需要查看这个串口设备输出: cat ttyUSB0 如果需要对这个设备输入: echo yaoxu > ttyUSB0

21.6K20

Linux 串口的基本用法

查看Linux本机串口: 1、查看串口是否可用 如果需要查看这个串口设备输出: cat ttyUSB0 如果需要对这个设备输入: echo yaoxu > ttyUSB0 常用的调试工具有: minicom...cutecom Linux系统可视化串口应用软件,使用上与Windows系统串口调试工具。 picocom 效果上类似 minicom 的精简版,设置比较简单,还可以有背景颜色。...PC上的串口一般是ttyS,板子上Linux串口一般叫做ttySAC; 串口权限问题 临时调试解决 在使用串口进行通信时,经常需要使用指令来赋予用户读写的权限 $ sudo chmod 777 /dev...查看linux所有用户 使用 /etc/passwd 文件 使用任何一个像 cat、more、less 等文件操作命令来打印 Linux 系统上创建的用户列表。.../etc/passwd 是一个文本文件,其中包含了登录 Linux 系统所必需的每个用户的信息。

10K41

嵌入式Linux串口编程

简介 嵌入式Linux串口编程与Linux系统下的编程没有什么区别,系统API都是一样的。...嵌入式设备中串口编程是很常用的,比如会对接一些传感器模块,这些模块大多是RS232或者RS485接口,对于软件层面上来说,RS232与RS48区别不大。...RS232与RS485在使用上的区别,RS232是全双工的,只能对接一个设备串口设备。RS485是半双工的总线协议,一般可以挂多个传感器设备,半双工的意思是同时只能有一个设备向串口发数据。...用到的API函数 函数 说明 open 打开设备,用于打开串口设备 fcntl 修改设备描述符属性参数 isatty 检测打开的描述符是否指向一个终端 tcgetattr 用来获取串口终端参数 cfmakeraw...将终端设置为原始模式,该模式下所有的输入数据以字节为单位被处理 tcflush 用于清空输入、输出缓冲区 tcsetattr 设置串口终端参数 read 读取数据 write 写数据 close 关闭串口设备

13.1K20
领券