看的是这个人的:
这
进线程同步
套接字,共享内存(信号灯...),管道(相关进程),命名管道(无关进程,描述符)
信号,消息队列(有格式,类型,优先级)
线程同步:
锁:互斥锁,自旋锁(一直原地打转的锁),读写锁(多读单写),条件变量(互斥锁),信号量(高级互斥,类似红绿灯)
协程(程序范围内线程),多核->多进程+协程
.
并发性:其实协程,线程都差不多,都是在条件不具备时,为了不浪费资源,切换到其他程序的过程
.
就像多条道路一样,这条不通,就走另外几条.
进程通信方法:
linux:管道 信号量 共享内存 消息队列 套接字 windows:共享内存(特殊文件映射),邮槽(点对点消息队列) 匿名管道 命名管道 套接字.
文件映射:把文件当内存一样使用.
共享内存:用-1代替文件句柄,文件映射对象,从页面访问内存.其他进程可访问.
匿名管道:左端句柄(进程)--右端句柄(进程)可单向(只读-只写),可双向(都可读写).
命名管道:服进程与客户进程通信
.两个进程之间通信比较,多了就不行了.根据权限通信.可跨计算机,tcp
邮槽:单向通信.客-名->发送,放在邮槽中,可多邮槽实现双向通信.就像邮箱一样.放在那,然后有空就来读.用udp.
套接字.
线程通信:同步互斥.锁,信号机制.
窗口:全局变量,消息队列.
内部中断,又叫异常.有三种:程序错误,软件引发,int 0,int 3,bound,机器检查.
硬件中断:外围硬件发出,请求服务.中断控制器收集,先执行指令,再响应中断.
软中断:int n
memcache,内存中缓存数据或对象.
c文件读写函数:open,read,close,write,lseek(指定偏移),fstat(状态),mmap(内存映射), mmap映射后,不必读写了,像内存一样操作.页面大小的整数倍,面向流的设备不能映射,实现与硬件有关, fcntl(文件属性),ioctl通过对文描发送命令来控制设备
.
位图:就是一个4位整数用1位来表示.节省32倍空间.
布隆过滤器:判断是否存在元素,本质还是哈希.哈希将元素映射为位.哈希的缺点就是数据量大时的冲突. 不存储元素,可保密.哈希函数间无关,易于硬件并行实现.可表全集.可位操作.不能删元素
,就是个哈希.
同步IO,异步IO:这是IO完成的事.
死锁.就是我们都要两个东西才能干活,结果你一个,我一个,大家都干不了活,干瞪眼.
其实计算机行业,最大的毛病就是概念太多.很多一样的东西,折腾过来,折腾过去.瞎折腾.