04 2017 档案
linux 内核的futex pi-support,即pi-futex使用rt_mutex委托
摘要:futex的pi-support,也就是为futex添加pi算法解决优先级逆转的能力,使用pi-support的futex又称为pi-futex。在linux内核的同步机制中,有一个pi算法的成例,就是rt_mutex实时锁。而futex的pi-support部分就是委托(代理)给rt_mutex进 阅读全文
posted @ 2017-04-28 20:45 bbqz007 阅读(1598) 评论(0) 推荐(0)
pthread的lowlevellock
摘要:pthread的lowlevellock是futex的最简单的锁应用。也是pthread其它同步原语最基本的锁。lowlevellock提供(或实现)了三种锁(方法),一是基于0或1的互斥的锁规则,二是基于robust futex定义的锁规则,三是用于condition重新对临界区上锁的操作。 lo 阅读全文
posted @ 2017-04-25 20:49 bbqz007 阅读(2087) 评论(1) 推荐(0)
linux 内核的rt_mutex (realtime互斥体)
摘要:linux 内核有实时互斥体(锁),名为rt_mutex即realtime mutex。说到realtime一定离不开priority(优先级)。所谓实时,就是根据优先级的不同对任务作出不同速度的响应。rt_mutex也就是依据任务(task,process)的priority进行排队的锁,同时使用 阅读全文
posted @ 2017-04-25 20:28 bbqz007 阅读(3010) 评论(0) 推荐(0)
linux 内核的各种futex
摘要:non-pi futex,pi-futex,requeue-pi,robust-futex 阅读全文
posted @ 2017-04-25 18:39 bbqz007 阅读(15323) 评论(0) 推荐(2)
linux 内核的futex
摘要:futex是linux内核为用户空间实现锁等同步机制而设计的同步排队(队列queueing)服务。在futex.c的注释中,futex起源于"Fast Userspace Mutex",但它并非只是一个Mutex,而是用户空间线程(pthread)同步机制的底层服务。它的基本设计有三点,1.同步对象 阅读全文
posted @ 2017-04-24 19:59 bbqz007 阅读(5072) 评论(1) 推荐(0)
linux 内核的另一个自旋锁 - 读写锁
摘要:除spinlock外,linux 内核还有一个自旋锁,名为arch_rwlock_t。它的头文件是qrwlock.h,包含在spinlock.h,头文件中对它全称为"Queue read/write lock"。这个锁只使用了两个成员变量就实现了读写锁。一个spinlock,以及一个整形锁变量。而s 阅读全文
posted @ 2017-04-20 20:24 bbqz007 阅读(2910) 评论(0) 推荐(0)
linux 内核的spinlock
摘要:1.设计。2.实现。3.内联和非内联实现的区别。4.官方的设计文档给出的注意点。 阅读全文
posted @ 2017-04-18 20:17 bbqz007 阅读(798) 评论(1) 推荐(1)
ACE框架 同步原语设计
摘要:ACE框架常用的同步机制设计成统一的原语接口。同步原语使用系统平台(操作系统,多线程库)提供的同步原语,并为系统平台不提供的同步原语提供模拟实现。ACE框架使用了外观模式和适配器分两层,将同步原语统一接口。 在外观包装层,ACE框架为每种同步原语将系统平台不同的同步原语函数统一成一致的函数接口集,并 阅读全文
posted @ 2017-04-14 20:43 bbqz007 阅读(342) 评论(0) 推荐(0)
ACE框架 基于共享内存的进程间通讯
摘要:ACE框架将基于共享内存的进程间通讯功能,如其它IO组件或IPC组件一样,设计成三个组件。流操作组件ACE_MEM_Stream,连接器组件ACE_MEM_Connector,以及接收连接组件ACE_MEM_Accpter。ACE框架为基于共享内存的进程间通讯提供了两种数据传输(分发deliver) 阅读全文
posted @ 2017-04-13 20:18 bbqz007 阅读(842) 评论(0) 推荐(0)
ACE框架 基于共享内存的分配器 (算法设计)
摘要:继承上一篇《ACE框架 基于共享内存的分配器设计》,本篇分析算法部分的设计。 ACE_Malloc_T模板定义了这样一个分配器组件 分配器组件聚合了三个功能组件:同步组件ACE_LOCK,内存块管理算法组件ACE_CB, 以及内存底层服务组件ACE_MEM_POOL_1。 内存底层服务组件ACE_M 阅读全文
posted @ 2017-04-13 16:28 bbqz007 阅读(471) 评论(0) 推荐(0)
ACE框架 基于共享内存的分配器
摘要:ACE框架提供了一个内存分配器模板,并且提供了(仅且)一个模板实例,基于共存内存的内存分配器。这个共存内存分配器模板实例在ACE框架应用于,基于内存映射的进程通讯,以及进程间同步等。 ACE内存分配器模板ACE_Malloc_T定义了这样一个分配器,它使用了三个组件,同步锁<ACE_LOCK>,内存 阅读全文
posted @ 2017-04-11 19:45 bbqz007 阅读(666) 评论(0) 推荐(0)
connected datagram 与TCP连接的区别
摘要:TCP连接流程是TCP协议的一部分,需要经过三次握手。而connected datagram虽然使用了socket的同样的函数connect,但是UDP协议并不包含连接流程,也就是UDP实际上并没有真正和远端通过一定的协议流程就直接建立起我们所谓的连接,或者简单地说,指定了一个默认的外出口。 TCP 阅读全文
posted @ 2017-04-11 19:45 bbqz007 阅读(421) 评论(0) 推荐(0)
LF模式解决的问题
摘要:一说起Leader/Followers并发模式,都会与Half-Async/Half-Sync并发模式进行比较,说LF模式更加高性能,成了一个高性能名词标签 符号,相反HA/HS仿佛成了一个低性能的名词标签,如果你的线程池不使用LF模式就谈论不上高效,要是你还在使用HA/HS模式,马上笼 统地建议换 阅读全文
posted @ 2017-04-07 18:48 bbqz007 阅读(508) 评论(0) 推荐(0)
ZeroC ICE的远程调用框架 ThreadPool
摘要:ThreadPool提供Reactor/Proactor服务,并且强偶合了Reactor(反应器)/Proactor(前摄器)。不同于Reactor/Proactor使用线程池 进行事件处理的设计。如ACE框架的ACE_TP_Reactor。同时ThreadPool提供一个共享的工作分派队列,可以用 阅读全文
posted @ 2017-04-06 20:19 bbqz007 阅读(1413) 评论(0) 推荐(0)