ICode9

精准搜索请尝试: 精确搜索
  • socket缓冲区2022-06-18 19:31:55

    每个socket被创建后,无论使用的是TCP协议还是UDP协议,都会创建自己的接收缓冲区和发送缓冲区。当我们调用write()/send() 向网络发送数据时,系统并不会 马上向网络传输数据,而是首先将数据拷贝到发送缓冲区,由系统负责择时发送数据。根据我们选用的网络协议以及阻塞模式,系统会有不同的

  • Redis的多线程与IO多路复用2022-06-10 21:04:20

    标题说的多线程与通常说的redis是单线程不一致,具体原因如下:   Redis的3.X以前的版本是单线程的,4.X加入了异步删除,不是严格意义上的单线程,最新版本6.X告别了大家印象中的单线程,以全新多线程来解决问题;   Redis是单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Re

  • 四张图读懂 BIO、NIO、AIO、多路复用 IO 的区别2022-06-10 14:06:07

    学习之前,我们先来了解一下IO模型: ①同步阻塞IO(Blocking IO):即传统的IO模型。 ②同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。 ③多路复用IO(IO Multiplexing):即经典的Reactor设计模式,有时也

  • qt使用线程捕获视频总结2022-06-05 11:32:23

    在qt中,如果由于捕获视频导致ui主线程卡顿,则可以采用线程捕获视频数据的方式, 但是会导致内存管理崩溃,泄露等严重问题。因此视频捕获采用阻塞方式,及在ui主线程中执行。 原因: V4L2编程中使用阻塞方式打开一个设备文件,除非你能开始采集数据时队列里的n块缓存已有数据存在。 倘若使用非

  • 网络IO2022-06-03 20:00:19

    流: IO操作:从流中写/读数据。 阻塞与非阻塞的区别:如果阻塞直到完成那么就是传统的阻塞IO,如果不阻塞,那么就是非阻塞IO。 如何解决等待阻塞/大量IO请求读写? 1.阻塞+多线程:需要开辟线程浪费资源 2.非阻塞+忙轮询 CPU利用率不高 3.select 监听IO数量有限,需要遍历 4.epoll 只关心活跃的

  • qt多线程内存崩溃2022-06-03 14:04:24

     V4L2编程中使用阻塞方式打开一个设备文件,除非你能开始采集数据时队列里的n块缓存已有数据存在。 倘若使用非阻塞,则会出现BUG: VIDIOC_DQBUF: Bad file number 可能是内核缓冲区(驱动缓冲区)没有这么大导致程序在VIDIOC_DEBUF时一直阻塞  也可能是驱动的问题 当把捕捉画面的帧率降

  • 自旋锁、阻塞锁、可重入锁使用解析2022-06-01 14:33:11

    常听见有人在问这几种类型的锁有什么区别,所以整理了这篇文章。 一、自旋锁 自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时 才能进入临界区。如下:   使用了CAS原子操作,lock函数将owner设置为当前线程,并且预测原来的值为空。unlock函数将owne

  • Golang 的无缓冲通道和有缓冲通道2022-06-01 00:35:50

    声明通道 package main func main() { /* //无缓冲整型通道 unbuffered := make(chan int) //有缓冲字符串通道 buffered := make(chan string,10) //向通道发送值 <- 在通道右侧 buffered <- "Gopher" //从通道接受值 <- 在通道左侧 value := <- buffered

  • 多线程2022-05-25 07:32:12

    进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。 等待阻塞:运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状态。 同步阻塞:线程在获取 synch

  • 04 | pythonIO并发(IO多路复用、协程技术)2022-05-24 21:03:40

    目录IO并发IO 分类 (模型思想)阻塞IO非阻塞IOIO多路复用

  • linux驱动之阻塞机制2022-05-20 13:03:44

    设计驱动阻塞机制,通过等待队列wait_queue来实现 1.schedules之后,等待信号,函数就退出了,原因是什么?******** 答: signal_pending( current )―――》检查当前进程是否有信号处理,返回不为0表示有信号需要处理。 if(signal_pending(current)){ ret = -ERESTARTSYS; return ret; } 返回-

  • 线程状态:新建/就绪/运行/阻塞/死亡2022-05-14 21:02:14

    1、新建 2、就绪 3、运行 4、阻塞 5、死亡 版权声明:本文所有权归作者! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处! 赞成、反驳、不解的小伙伴,欢迎一起交流!

  • 线程池中多余的线程是如何回收的?2022-05-13 10:03:30

    最近阅读了JDK线程池ThreadPoolExecutor的源码,对线程池执行任务的流程有了大体了解,实际上这个流程也十分通俗易懂,就不再赘述了,别人写的比我好多了。 不过,我倒是对线程池是如何回收工作线程比较感兴趣,所以简单分析了一下,加深对线程池的理解吧。 下面以JDK1.8为例进行分析 1. runWo

  • 线程池2022-05-12 16:31:24

    线程池ThreadPoolExecutor 状态:  Runing:允许提交并且处理任务 shutdown:不允许提交新的任务,但是会处理完已经提交的任务 stop 不允许提交新的任务,也不会处理阻塞队列中的未执行任务,并且设置正在执行线程的中断标志位 tidying所有任务执行完毕,池中工作的线程数为0 terminated term

  • 阻塞、非阻塞与同步、异步2022-05-12 14:35:29

    阻塞和非阻塞 关注的是程序在等待调用结果(消息,返回值)时的状态. 1.阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。 2.非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。 (非阻塞模式我们常用在php程序内部调用第三方api接口,或者不

  • Go从入门到精通——带缓冲的通道2022-05-11 12:34:42

    带缓冲的通道   在无缓冲通道的基础上,为通道增加一个有限大小的存储空间形成带缓冲通道。   带缓冲通道在发送时无需等待接收方接收即可完成发送过程,并且不会发生阻塞,只有当存储空间满时,才会发生阻塞。   带缓冲通道有数据时,接收方将不会发生阻塞,直到通道中没有数据可读时,通

  • 并发编程之临界区\阻塞\非阻塞\死锁\饥饿\活锁2022-05-11 08:31:22

    本文介绍并发编程中的若干概念,实际上在笔者之前的文章中,已经介绍过很多概念。比如:并发与并行、同步与异步、锁与信号量等等。参考《并发编程专栏》,本文计息介绍一些相对深入一些的概念 一、临界区 为了方便大家理解,我们先看下面的这样一张图,我们可以把房子看作一个进程,每个房子里

  • 怎样理解阻塞非阻塞与同步异步的区别?2022-05-10 16:03:48

    关于阻塞、非阻塞与同步、异步之间的关系,网上回答五花八门,往往看完了也似懂非懂。偶然发现知乎一个回答挺不错: 怎样理解阻塞非阻塞与同步异步的区别?

  • linux 信号2022-05-08 17:02:42

    信号: 一个发出而没有被接收的信号叫做待处理信号,任何时刻,一种类型至多只能发送一个待处理信号。 一个进程有类型为k的待处理信号,那么任何后续发送到这个进程的类型为k的信号都不会排队等待,只是简单的被丢弃。 一个进程可以有选择地阻塞接收某个某种信号,当信号没阻塞时,仍可以被发送

  • BIO和NIO的区别2022-05-07 18:34:07

    1.BIO基本介绍 BIO是传统的Java IO编程,其基本的类和接口在java.io包中 BIO(blocking I/O):同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销 BIO方式使用于连接数目比较小且固定

  • 线程池任务执行结果Future2022-05-06 14:33:21

    获取线程池submit获取Future对象 Future<String> future = pool.submit(task);   Future对象的方法       get方法 不带参数(阻塞式):直到任务执行完毕才获取返回结果,在任务执行过程中阻塞。 带参数(定时式):设置最大超时时间,到达这个时间线程未结束抛异常。   cacel方法:  

  • [ Tcl ] 非阻塞模式启动外部程序,并接收返回值的方法2022-05-04 04:01:45

    https://www.cnblogs.com/yeungchie/ Callback 函数 proc Callback { handle } { variable line if { [catch {gets $handle line}] || [chan eof $handle]} { # 这里 gets 当获取失败,或者遇到 End Of File 时,关闭管道 catch {close $handle} } else

  • 第10章 阻塞队列2022-05-03 21:00:14

    10.1 Block ingQueue简介 Concurrent包中, BlockingQueue很好的解决了多线程中,如何高效安全"传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使

  • Java并发—辅助类CountDownLatch2022-04-25 16:33:41

    JUC中的同步器三个主要的成员:CountDownLatch、CyclicBarrier和Semaphore。这三个是JUC中较为常用的同步器,通过它们可以方便地实现很多线程之间协作的功能。 一、概述 CountDownLatch是基于AQS实现,当构建count对象时,传入的值其实就会赋值给AQS的关键变量state,执行countDown()方法时

  • 并发编程12022-04-19 02:01:31

    内容概要 UDP协议 UDP协议实战(基于UDP实现简易版本的qq聊天) 操作系统的发展史 多道技术 进程理论 重要概念01 重要概念02 同步异步与阻塞非阻塞结合 内容详情 UDP协议 服务端 import socket server = socket.socket(type=socket.SOCK_DGRAM) # 自己指定UDP协议(默认是TCP

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有