- 博客(6)
- 收藏
- 关注
原创 进程间通信:System V消息队列,pipe,FIFO
进程间通信:System V消息队列,pipe,FIFOSystem V消息队列基本概念msggetmsgctlmsgsndmsgrcvpipe(匿名管道)基本概念popen / pcloseFIFO(有名管道)基本概念System V消息队列基本概念消息队列本质是在内核中存储的消息链表。和System V信号量/共享内存一样,首先需要使用msgget根据给定key获取消息队列标识符qid,在使用标识符链接到目标消息队列进行操作。msgsnd用于向消息队列添加新消息到队列尾部,msgrcv可以实现
2020-10-24 22:40:22
211
原创 迭代器设计思路
迭代器设计思路引言指针行为的模拟迭代器traits编程traits设计模式iterator_traits涉及的关联类型value_type引言本篇主要思路总结一下《STL源码剖析》第三章中迭代器设计的知识,看得出是好书,可惜目前还没计划开始看STL源码,第一章allocator直接看不懂,迭代器因为之前项目参考的开源代码有涉及因此只能硬着头皮看,最近有面试问倒了干脆就重新拿出来总结一下。迭代器的设计中一个比较关键的部分是traits设计模式的理解。指针行为的模拟迭代器是一种类似指针行为的对象, 因此
2020-10-18 11:25:20
341
原创 进程间通信:System V 信号量,共享内存
进程间通信:System V 信号量,共享内存引言引言Unix下进程间通信的方法主要有以下几种:pipe:无名管道,一般半双工通信,只能用于继承关系的进程(fork)之间的通信,可以用于零拷贝函数spliceFIFO:有名管道,可以在独立不相关进程间全双工通信System V IPC结构:不使用Unix文件系统命名空间的一种...
2020-10-10 14:14:01
268
原创 socket API
socket APIsocket API概述socket 地址 API字节序socket地址及转换socket 基础 API创建socket地址绑定监听socket接受连接发起连接读写数据连接关闭参考文献socket API概述socket是网络通信端点的抽象,可用于网络间进程通信接口,Linux下socket接口主要可以分为以下几种:socket地址API:socket地址,指定通信的端点,包括:字节序转换(htonl/htons/ntohl/ntohs)地址结构体(sockaddr/soc
2020-09-05 19:58:13
831
原创 多路IO复用:epoll
多路IO复用:epollepoll简介epoll_createepoll_cltepoll_wait为什么事件表构建为RB-TreeLT/ET概念ET工作机制EPOLLONESHOT (Linux 2.6.2+)应用场景参考文献epoll简介epoll在linux 2.5.44内被引入,FreeBSD, MacOS中类似的实现是kqueue,epoll主要解决select,poll对于fd或事件结构需要O(n)的循环遍历。epoll在注册事件时,会将事件添加到红黑树中并注册回调事件,对红黑树搜索寻找就绪
2020-08-29 16:09:47
261
原创 多路IO复用:select,poll
多路IO复用:select,poll为什么使用多路IO复用select函数签名timeoutfd_setpselect使用过程存在问题poll函数签名pollfd特点与问题参考资料为什么使用多路IO复用使用场景:同时需要对多个低速IO进行读写操作解决方法与问题:最简单低速阻塞IO(pipe,FIFO,socket)会持续阻塞直到有数据时读入,如果有两个读fd,第二个fd只有当前一个fd完成读入操作后,才能读取自己的数据。如果第二个fd数据提前到达也无法处理。对每一个阻塞读fd开辟一个线程/进程
2020-08-21 22:10:25
143
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人