线程在执行中如果遇到(I/O 操作)如磁盘读写或网络通信,通常要耗费较长的时间,这时操作系统会剥夺这个线程的 CPU 控制权,使其暂停执行,同时将资源让给其他的工作线程,这种线程调度方式称为 阻塞。当 I/O 操作完毕时,操作系统将这个线程的阻塞状态解除,恢复其对CPU的控制权,令其继续执行。这种 I/O             
                
         
            
            
            
            非阻塞有限状态机的实现 C语言非阻塞IO – 阻塞IOIO多路转接其他读写函数存储映射IO文件锁非阻塞 IO简单流程:如果一个程序的自然流程是结构化的,就是简单流程。(明确能分析结构流程的)复杂流程:如果一个程序的自然流程不是结构化的,就是复杂流程。有限状态机的实现方法:任务:实现一个数据中继模型。(流式套接字) - - -> 设备1 <——> 设备2 < - - -目标:            
                
         
            
            
            
            有很多人把阻塞认为是同步,把非阻塞认为是异步;个人认为这样是不准确的,当然从思想上可以这样类比,但方式是完全不同的,下面说说在JAVA里面阻塞IO和非阻塞IO的区别 在JDK1.4中引入了一个NIO的类库,使得Java涉及IO的操作拥有阻塞式和非阻塞式两种,问一下阻塞IO与非阻塞IO有什么区别?有什            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-12-24 10:10:15
                            
                                517阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1. 问题描述在项目中用到了两个串口uart4和uart6,在使用uart6发送数据的时候会阻塞,猜想应该是驱动的问题,所以接下来进行分析2. 分析过程先分析串口驱动,关于串口驱动这部分的架构不再赘述,我们看下源文件,在发送的地方看到了一处while循环读取串口发送完成寄存器的代码while (__HAL_UART_GET_FLAG(&(uart->handle), UART_FLA            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-29 15:24:21
                            
                                242阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Java使用Redis实现类似消息队列的方法前提条件: SpringBoot项目集成了Redis,并且可以直接使用。本文使用SpringDataRedis的RedisTemplate实现。 实现效果:生产者能够向redis队列中不断发送数据。消费者可以不断的从该队列获取到该数据,进行处理。核心代码:redisTemplate.opsForList().leftPush(QUEUE, jsonObj            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-11 23:07:08
                            
                                463阅读
                            
                                                                             
                 
                
                             
         
            
            
            
              对于VerilogHDL语言中,经常在always模块中,面临两种赋值方式:阻塞赋值和非阻塞赋值。  对于初学者,往往非常迷惑这两种赋值方式的用法,本章节主要介绍这两种文章的用法。其实,有时候概念稍微不清楚,Bug就会找到我们,下面一文扫清阻塞赋值和非阻塞赋值所有的障碍。  基本概念阻塞赋值(Blocking Assignment)  阻塞赋值的基本描述格式为:[变量] =            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-09 22:29:45
                            
                                47阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            NIO的非阻塞模式
NIO完成核心的东西是一个选择器,Selector,选择器主要是将每一个传输数据的通道注册到选择器上,选择器作用是监控这些IO的状态(读,写,连接状态),然后用选择器监控通道的状况,等待所有的线程准备就绪时,选择器将任务分配到服务端一个或者多个线程上再去运行            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-02-22 18:51:04
                            
                                179阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞队列提供了四种处理方法:方法\处理方式抛出异常返回特殊值一            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-04 22:28:47
                            
                                28阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            这两天在看一个FTP客户端的代码,里面用到了socket的非阻塞模式。之前没有接触个这方面。看了下APUE,里面只是简单说了下,这个是文件状态标志。。在linux下什么都是以文件形式存在的,设备也是。访问设备可以通过文件描述符来访问。刚开始我还以为,一个文件设置个非阻塞模式或是阻塞模式干什么用,难道阻塞模式就打开文件,什么都不干,干等着阿。。于是我谷歌。发现只有在设备和网络使用阻塞和非阻塞模式。正            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-12 07:12:16
                            
                                42阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            NIO的非阻塞模式NIO完成核心的东西是一个选择器,Selector,选择器主要是将每一个传输数据的通道注册到选择器上,选择器作用是监控这些IO的状态(读,写,连接状态),然后用选择器监控通道的状况,等待所有的线程准备就绪时,选择器将任务分配到服务端一个或者多个线程上再去运行NIO完成网络通信的三个核心1.通道(Channel):负责连接java.nio.channels.Channel ...            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-06-02 09:28:02
                            
                                328阅读
                            
                                                                             
                 
                
                             
         
            
            
            
              近来遇到一些网络编程方面的问题,涉及到了一些常见的概念,如:阻塞、非阻塞、异步I/O等等,百度的结果是惨不忍睹的,当然这也不能怪百度。没有办法还是得看英文,翻教材。后来发现阻塞和非阻塞的概念也并不难以理解,这篇随笔记录一下自己的见解,欢迎拍砖,希望多多交流。  进程的状态主要涉及运行态、就绪态和阻塞态等,一个进程逻辑上无法继续执行(例如等待I/O事件时)会被阻塞。实际上OS内部是由一个高级的进            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-15 10:50:03
                            
                                50阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1、如果上层如汇聚层的链路带宽大于或等于接入层带宽之合就是非阻塞式设计,如果下小就是阻塞式。例如:汇聚层为1000M下面连了八个100M的接入层交换机,这就叫非阻塞式,反之亦然。            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-12-12 16:36:04
                            
                                76阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            阻塞socket和非阻塞socket阻塞与非阻塞是对一个文件描述符指定的文件或设备的两种工作方式。阻塞当试图对该文件描述符进行读写时,如果当时没有东西可读或者暂时不可写,程序就进入等待状态,直到有东西可读或者可写为止。阻塞好控制,不发送完数据程序不会走下去,效率较低。非阻塞当没有东西可读或者不可写时,读写函数就马上返回,而不会等待。非阻塞会一直轮询,消耗资源多,但是性能好。使用场景阻塞模式,常见的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-21 09:42:08
                            
                                57阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列非阻塞,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。 队列遵循先进先出,后进后出的原则。 阻塞式队列比非阻塞式队列性好。 阻塞式队列与非阻塞队列的区别: 阻塞            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-05-28 01:14:41
                            
                                367阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            阻塞式IO/非阻塞IO 阻塞式IO(blocking-IO) 默认情况下,所有的套接字socket连接都是阻塞式的,在和操作系统交互的过程之中。比如说一个读操作: 1.因为涉及到网络数据交换network io,等待所有的分组报到达之后这时候数据才算在操作系统内部为就绪状态。 2.然后操作系统在从系            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-07-28 12:04:02
                            
                                147阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
                   对于消费者模式,在一般应用中可以使用阻塞队列+线程池来实现。比如说在一个应用中,A方法调用B方法去执行一些任务处理。我们可以同步调用。但是 如果这个时候请求比较多的情况下,同步调用比较耗时会导致请求阻塞。我们会使用阻塞队列加线程池 来实现异步任务的处理。        那么,问题来了,如果是在分布式系统中            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-06 10:44:07
                            
                                139阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1  IO模型IO模型简介我们研究的IO模型都是针对网络IO的,Stevens总结了一共五种IO Model,五种模型如下:blocking IO ——阻塞IOnonblocking IO——非阻塞IOIO multiplexing——IO多路复用signal driven IO——信号驱动IO(实际中运用较少)asynchronous IO——异步IO由于第四种信号驱动IO实际中不常用,我们主要            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-03 11:27:37
                            
                                29阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            说到阻塞,首先得说说I/O等待。I/O等待是不可避免的,那么既然有了等待,就会有阻塞,但是注意,我们说的阻塞是指当前发起I/O操作的进程被阻塞同步阻塞I/O便是指,当进程调用某些涉及I/O操作的系统调用或库函数时,比如accept()(注意accept也算在了i/o操作)、send()、recv()等,进程便暂停下来,等待I/O操作完成再继续运行。这是一种简单而有效的I/O模型,它可以和多进程结合            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-06 08:03:19
                            
                                63阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            freertos空闲任务、阻塞延时空闲任务阻塞延时SysTick实验现象 阻塞态:如果一个任务当前正在等待某个外部事件,则称它处于阻塞态。rtos中的延时叫阻塞延时,即任务需要延时的时候,会放弃CPU的使用权,进入阻塞状态。在任务阻塞的这段时间,CPU可以去执行其它的任务(如果其它的任务也在延时状态,那么 CPU 就将运行空闲任务),当任务延时时间到,重新获取 CPU 使用权,任务继续运            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-28 16:52:27
                            
                                35阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            阻塞式特点: 添加一个任务,就执行一个任务,如果一个任务不结束,下一个任务就不会被添加进来 import os from multiprocessing import Process, Pool from random import random import time def task(task_            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2020-05-13 15:20:00
                            
                                150阅读
                            
                                                                                    
                                2评论