ICode9

精准搜索请尝试: 精确搜索
  • Go channel简介2022-03-19 16:02:38

    channel 用于在并发单元之间通信,类似于管道 ch := make(chan int) // 创建一个channel defer close(ch) ch <- v // 向管道中写入 v := <-ch // 从管道读取 v, ok := <-ch channel类型 channel有三种类型[可读可写 | 只读 | 只写] chan T // rw chan<- T // w <-cha

  • 同步I/O、异步I/O、阻塞I/0、非阻塞I/O、五种I/O模型、高性能网络模型2022-03-19 10:04:22

    10、I/O相关概念 https://www.cnblogs.com/xiaoxi/p/6525396.html 10.1、同步和异步 ​ 同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行; ​ 异步就是:如果有多个任务或者事件

  • ThreadPoolExecuter线程池详解2022-03-09 18:32:27

    一、源码分析步骤   1.掌握线程池工作状态   2.任务在线程池工作流程   3.线程池任务等待队列管理策略   4.线程池任务拒绝策略   5.线程池关闭策略   6.线程池初始化策略   7.线程池中线程数量扩容方案二、线程池工作状态   1.工作状态

  • ArrayBlockingQueue和LinkedBlockingQueue分析2022-03-08 11:34:59

    JAVA并发包提供三个常用的并发队列实现,分别是:ConcurrentLinkedQueue、LinkedBlockingQueue和ArrayBlockingQueue.     ConcurrentLinkedQueue使用的是CAS原语无锁队列实现,是一个异步队列,入队速度很快,出队进行了加锁,性能稍慢;     LinkedBlockingQueue也是阻塞队列,入队和出队

  • BlockingQueue(阻塞队列)详解2022-03-07 16:33:23

    注意:该随笔内容完全引自http://wsmajunfeng.iteye.com/blog/1629354,写的很好,非常感谢,复制过来算是个积累,怕以后找不到。 一. 前言   在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建

  • unp第五章:客户端和服务端程序2022-03-07 04:00:25

    客户端在三次握手收到第二个分节之后,connect就立马返回,但是服务端只有收到最后一个分节才把连接纳入全连接队列。 子进程终止的时候,会给父进程发信号SIGCHILD,但该信号默认被忽略,导致子进程变成僵尸进程。 这里提一下linux为什么设置僵死态:为了保存子进程的一些执行信息(进程I

  • 09阻塞与非阻塞I/O,同步与异步I/O,I/O复用2022-03-05 23:00:29

    一、阻塞与非阻塞I/O 阻塞与非阻塞I/O 阻塞和非阻塞主要是指调用某个系统函数时,这个函数是否会导致我们的进程进入 sleep()【卡在这休眠】状态而言的; a)阻塞I/O 我调用一个函数,这个函数就卡在在这里,整个程序流程不往下走了【休眠sleep】,该函数卡在这里等待一个事情发生, 只有这个

  • select poll epoll2022-03-03 13:34:25

    以下都是个人通过视频学习的理解,描述不够严谨但大体如此,参考链接:https://www.bilibili.com/video/BV1fg411376j?p=5创建一个套接字的时候会创建一个用于监听的文件描述符(fd),每个套接字只有一个监听fd fd又分为监听fd和通信fd每个fd(不论是监听fd和通信fd结构都是一样的)都有一个

  • 一文总结java并发相关知识点 线程 线程池 并发容器 原子类 生产消费模式。。。2022-03-02 22:31:39

    Java并发 一,进程和线程 进程和线程都是CPU调用任务的概念。 进程:系统是系统分配资源的最小单位,进程包含1到多的线程,进程内的线程,可以有空闲的内存。 线程:系统调度任务的最小单位。 二,并发和并行 CPU是按进度顺序执行的,并发本质吧上是串行执行的。由于操作系统任务调度器的存

  • BlockingQueue源码分析2022-03-02 19:05:57

    一、阻塞队列简介 队列常被用来解决生产——消费者问题,Java中定义了Queue接口以及通用的一些抽象方法 public interface Queue<E> extends Collection<E> { // 添加一个元素,添加成功返回true,如果队列满了就抛出异常 boolean add(E e); //添加一个元素,添加成

  • MySQL锁介绍2022-03-02 01:03:01

    转载: https://mp.weixin.qq.com/s/yhyr6M0hVEgQPyER0XyXuQ MySQL都有哪些锁呢? - 小林coding的回答 - 知乎 https://www.zhihu.com/question/422489306/answer/2062958661 在MySQL 里,根据加锁的范围,可以分为 全局锁、表级锁 和 行锁 三类。     全局锁 要使用全局锁,则要执行这

  • 进程相互作用之信号量PV操作及其代码实现2022-03-01 19:02:27

    信号量PV操作 基本介绍 信号量(Semaphore):是表示资源的实体,是一个与队列有关的整型变量,其值仅能由P、V操作改变。 信号量分为:公用信号量和私用信号量。 公用信号量:用于实现进程间的互斥,初值通常设为1,它所联系的一组并发进程均可对它实施P、V操作; 私用信号量:用于实现进程间的

  • 生产者消费者阻塞队列版2022-03-01 12:33:16

    package com.atgu; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; class MyResource{ private volatile boolean FLAG=true

  • redis为什么单线程还这么快2022-02-28 23:03:22

    1、纯内存访问。redis的所有数据都在内存中,这是快的主要原因 2、非阻塞IO。redis使用epoll作为IO多路复用的实现。 3、单线程避免了线程切换和资源竞争带来的开销。   单线程问题:耗时较长的命令可能导致阻塞

  • 【Tokio】最大阻塞线程数2022-02-28 19:33:46

    环境 Time 2022-01-11 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Builder.html 对于阻塞任务,Tokio 会新启动一个线程来运行,可以设置启动的最大线程数,默认是 512。 示例 main.rs use std::{io, thread, time::Duration}; use tokio

  • go 互斥锁实现原理2022-02-28 14:31:57

    目录go 互斥锁的实现1. mutex的数据结构1.1 mutex结构体,抢锁解锁原理1.2 mutex方法2. 加解锁过程2.1 简单加锁2.2 加锁被阻塞2.3 简单解锁2.4 解锁并释放协程3. 自旋过程3.1 什么是自旋3.2 自旋条件3.3 自旋的优势3.4 自旋的问题4. Mutex模式4.1 Normal模式4.2 Starving模式5. Wo

  • 【Tokio】阻塞关闭运行时2022-02-27 22:04:38

    环境 Time 2022-01-10 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Runtime.html shutdown_timeout 方法关闭运行时会阻塞,等待任务完成。参数可以提供最大等待时间,超时将被强制结束。 示例 main.rs use std::{io, thread, time::Dura

  • 【Tokio】非阻塞关闭运行时2022-02-27 22:04:26

    环境 Time 2022-01-10 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Runtime.html shutdown_background 方法可以立即关闭运行时,不会产生阻塞。通常在另一个运行时中调用,避免阻塞。 由于 shutdown_background 不等待任务结束,可能会产

  • 【Tokio】阻塞线程任务2022-02-27 22:03:18

    环境 Time 2022-01-10 Rust 1.57.0 Tokio 1.15.0 概念 参考:https://docs.rs/tokio/latest/tokio/runtime/struct.Runtime.html spawn_blocking 方法可以接收一个闭包,可以是一个阻塞任务。 Tokio 有两种线程。一种给异步任务的核心线程,一种是运行同步任务的阻塞线程。 核心线程

  • Java基础 -> 线程的生命周期?线程有几种状态?2022-02-27 15:33:09

    线程的生命周期?线程有几种状态? 线程通常有五种状态,创建,就绪,运⾏、阻塞和死亡状态: 创建状态(New):新创建了⼀个线程对象。 仅仅是线程对象,操作系统线程还没有创建关键操作: new Thread(); 就绪状态(Runnable):线程对象创建后,其他线程调⽤了该对象的start⽅法。该状态的线程位于

  • 操作系统——文件系统2022-02-27 11:31:32

    文件IO:阻塞IO/非阻塞IO 阻塞IO:当用户程序执行read,线程会被阻塞,一直等到内核数据准备好,并把数据从内核缓冲区拷贝到用户缓冲区。当拷贝过程完成,read才会返回。 非阻塞IO:read请求在数据没有准备好的情况下立刻返回,可以继续往下执行,但是这时候用户程序一直在轮询内核,直到数据准备好,内

  • Java I/O 概览2022-02-24 19:01:59

    I/O介绍 I/O(Input/Outpu) 即输入/输出 。 学术的说 I/O 是信息处理系统(计算机)与外界(人或信息处理系统)间的通信。如计算机,即 CPU 访问任何寄存器和 Cache 等封装以外的数据资源都可当成 I/O ,包括且不限于内存,磁盘,显卡。 软件开发中的 I/O 则常指磁盘、网络 IO。 同步 & 异步 同步

  • 阻塞和非阻塞2022-02-24 18:03:57

    产生阻塞的场景: 读设备(dev)文件、读网络文件 tty就是显示终端设备,/dev/tty 这是会读到键盘的值并写道标准输出 第一个hello是自己输入的,是一直在等着,所以是阻塞 非阻塞的代码如下图所示: 此时read返回-1的时候,errno会变成EAGAIN或EWOULDBLOCK,表示非阻塞状态且当前无数据;阻塞情况

  • 阻塞队列&线程池的学习记录2022-02-23 16:58:16

    package com.leetcode.random.difficulty; import java.util.ArrayDeque; import java.util.Deque; import java.util.HashSet; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; pu

  • 今日学习总结2.232022-02-23 14:32:57

    一、基于TCP协议的套接字编程(进阶)   加上链接循环和通信循环:                   二、基于UDP协议的套接字编程                 三、进程的理论   程序:一堆代码,没有生命周期   进程:动态的,有生命周期   例如:     菜谱就是程序,做菜的过程就是进程

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

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

ICode9版权所有