![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高并发服务器
文章平均质量分 72
怒浪狂澜
这个作者很懒,什么都没留下…
展开
-
浅谈---线程
3.把一个任务分成两个线程执行,在单处理器上不一定块,除非能确定这两个部分同时执行,且运行在多处理器上。3.线程是进程的基本执行单元,进程的所有任务都在线程中国执行,进程至少有一个线程,这个线程被称为主线程或UI线程。pshared: 0表示是局部信号量,不被共享,非0表示可被其它变量共享。mutex: 指向被初始化的互斥量,attr指向互斥量的属性。2.当一个程序,需要同时处理多个工作时(如输入,输出,计算)用来自动阻塞一个线程,直到某情况发生,通常与互斥锁同时使用。原创 2024-03-29 15:31:39 · 419 阅读 · 1 评论 -
高性能内存池
realloc给一个已分配地址的指针重新分配空间,ptr为原有的空间地址,newsize是重新申请的地址长度,ptr若为NULL,则等同于malloc。不难发现p2地址距离p1地址有16字节远,而p1仅分配一个字节,剩余15字节无法分配。系统层:使用高性能内存组件Tcmalloc Jemalloc等(优化效率和碎片问题)malloc 在内存的动态存储区中分配一块大小为size的连续区域返回首地址。1.内存分配必须起始于4,8或16的整数倍(视处理器体系结构而定)的地址。应用层:使用内存池技术(全面解决)原创 2024-03-26 16:58:38 · 604 阅读 · 0 评论 -
进程间的通信--共享内存
如果要使用匿名内存映射,即flags中设置了MAP_ANONYMOUS,fd设为-1.有些系统不支持匿名内存映射,则可以使用fopen打开/dev/zero文件,然后对该文件进行映射,同样可以达到匿名内存映射的效果。原理:利用共享内存完成进程间通信,两个进程都通过虚拟地址空间(可能相同)映射到用户页表,然后通过用户页表映射到内u才能物理的相同一块内存区域。3.为无关联的进程提供共享内存空间,将一个普通文件映射到内存中。1.文件进行频繁读写,将一个普通文件映射到内存中。size: 块的大小,为4k的整数倍。原创 2024-03-25 16:14:04 · 487 阅读 · 1 评论 -
进程通信--信号
进程间的通信信号什么是信号?信号是给程序提供一种可以处理异步事件的方法,它利用软中断实现。不能定义信号,所有信号都是由系统预定义的。原创 2024-03-23 20:25:44 · 609 阅读 · 1 评论 -
进程间的通信--管道
在Unix或类Unix系统中,管道通常是通过操作系统内核中的一个缓冲区实现的,其输入和输出被映射到两个文件描述符上。一个进程通过向管道写入数据,另一个进程通过从管道读取数据,从而实现数据的传输。定义在unistd.h//用于创建匿名管道,基于内存,只能在创建它的进程及其子进程之间使用,无法在其他进程之间共享。与打开open类似,//用于创建命名管道,基于文件,与匿名管道相反,但速度不如匿名管道。1是管道头输入数据所以写,0是管道尾输出数据所以我们读,由此可知管道是半双工通信。原创 2024-03-24 15:54:00 · 292 阅读 · 1 评论 -
进程间的通信--消息队列
消息队列,用于从一个进程向另一个进程发送数据但仅将数据发送到队列中,不指定哪个进程接受消息队列独立发送消息和接收消息的进程(信号,匿名管道,命名管道都不独立)长度被限制为:MSGMNB单条消息也有最大长度限制:MSGMAX。原创 2024-03-24 16:29:01 · 369 阅读 · 1 评论 -
进程间的通信--信号量
信号量是一种特殊变量只能进行P,V操作,linux下的信号量是一种休眠锁P: if 信号量>0,把信号量-1;else if 信号量=0,挂起该进程V: 如果有进程因信号量挂起,则回复该进程,else 把信号量+1注:信号量都是原子操作,即其在执行时,不会中断。原创 2024-03-24 19:04:21 · 503 阅读 · 1 评论