1、基本知识 poll是Linux中的字符设备驱动中的一个函数。Linux 2.5.44版本后,poll被epoll取代。和select实现的功能差不多,poll的作用是把当前的文件指针挂到等待队列。 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询, ...
分类:
其他好文 时间:
2018-10-07 20:23:20
阅读次数:
198
1. 功能:创建以个等待队列头 2. 函数原型 #define DECLARE_WAIT_QUEUE_HEAD (name) / wait_queue_head_t name = __WAIT_QUEUE_HEAD_INITIALIZER(name) #define __WAIT_QUEUE_HEA ...
分类:
系统相关 时间:
2018-09-22 16:53:59
阅读次数:
703
看了很多文档,就简书说的最好。 关键词: 无竞争等待、同步机制(类似ABCABCABC)、条件变量不是锁、线程阻塞。 概念 线程同步的方法有多种,互斥量、信号量、条件变量、读写锁等。互斥量在允许或阻塞对临界区的访问上是很有效的,线程是在对已加锁的互斥量加锁时发生阻塞;条件变量则允许线程由于一些未达到 ...
分类:
其他好文 时间:
2018-09-11 11:18:31
阅读次数:
163
为啥我用netem做了一个流量的控制 但是发送的时候,感觉真正发送数据的时候还是没有达到每一个数据包都是1s的延迟呀,这里的1s的延迟是啥意思啊? 这里的delay并不是说每个数据包都delay 5s,而是说delay5s之后,一下子全部都发送出去? sudo tc qdisc add dev et ...
分类:
Web程序 时间:
2018-09-02 13:17:32
阅读次数:
388
1,什么是CAS CAS(Compare And Swap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无 ...
分类:
编程语言 时间:
2018-08-25 21:22:56
阅读次数:
279
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLo ...
分类:
编程语言 时间:
2018-08-19 00:51:06
阅读次数:
184
synchronized基础用法 synchronized可以用于修饰类的实例方法、静态方法和代码块。它保护的是对象(包括类对象)而非代码,只要访问的是同一个对象的synchronized方法,即使是不同的代码,也会被同步顺序访问。 每个对象有一个锁(又叫监视器)和一个锁等待队列,锁只能被一个线程持 ...
分类:
其他好文 时间:
2018-08-05 16:47:49
阅读次数:
130
锁标记如果过多,就会出现线程等待其他线程释放锁标记,而又都不释放自己的锁标记供其他线程运行的状况。就是死锁。 死锁的问题通过线程间的通信的方式进行解决。 线程间通信机制实际上也就是协调机制。 线程间通信使用的空间称之为对象的等待队列,则个队列也是属于对象的空间的。 Object类中又一个wait() ...
分类:
编程语言 时间:
2018-08-05 14:15:14
阅读次数:
180
生产者-消费者模式 1. 阻塞队列 生产者消费者模式中,一般采用阻塞队列来实现。阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。 2. 阻塞队列的运用 当队列中没有数据的 ...
分类:
其他好文 时间:
2018-08-05 01:09:44
阅读次数:
170
postgresql锁:postgresql中有3种锁模式,分别为:spinlock、lwlook和regularlock。1、spinlock自旋锁 spinlock使用互斥信息,与操作系统和硬件环境联系比较密切。spinlocky的主要特点是封锁的时间很短,没有等待队列和死锁检测机制。事务结束时,不能自动释放spinlock锁。2、LWLock轻量级锁 LWLock主要
分类:
数据库 时间:
2018-08-01 14:22:15
阅读次数:
229