
Linux_C编程
文章平均质量分 73
destory27
一个人的改变,源自于自我的一种积极进取,而不是等待什么天赐良机。
展开
-
简单静态库与动态库的创建以及Makefile基本使用
静态库的创建以及使用: gcc -c log.c |生成 log.o 文件 ar cr libstatic.a log.o |创建静态库libstatic.a 并将 .o 问价链接到 .a 文件中 gcc main.c -L. libstatic.a log.h -o out |-L:链接库 .:表示当前目录 后跟要链接的库和头文件, 生成可执行程序out动态库的创建以及使用: gcc -c -fPIC log原创 2017-04-24 17:37:26 · 2218 阅读 · 0 评论 -
高性能定时器-------时间轮
基于排序链表的定时器(https://blog.youkuaiyun.com/destory27/article/details/81748580)存在一个问题:添加定时器的效率偏低。 如图所示时间轮内,指针指向轮子上的一个槽,它以恒定的速度顺时针旋转,每旋转一步就指向先一个槽.该时间轮共有N个槽,旋转一周的时间是N*Si,每个槽指向一条定时器链表,没条链表上的定时...原创 2018-08-16 23:50:43 · 1106 阅读 · 0 评论 -
基于升序链表的定时器 - 处理非活动连接
服务器程序通常要定期处理非活动连接:给客户端发送一个重连请求,或者关闭该连接。利用alarm函数周期性的触发SIGALRM信号, 该信号的信号处理函数利用管道通知主循环执行定时器链表上的定时器任务---关闭非活动的连接。 采用升序双向链表实现定时器的功能,核心函数tick,它每隔一端固定时间就执行一次,以检测并处理到期的任务。判断定时器任务到...原创 2018-08-16 20:51:59 · 721 阅读 · 0 评论 -
IO多路复用-select
select系统调用的目的是:在一段指定时间内,监听用户感兴趣的文件描述符上的可读、可写和异常事件。poll和select应该被归类为这样的系统 调用,它们可以阻塞地同时探测一组支持非阻塞的IO设备,直至某一个设备触发了事件或者超过了指定的等待时间——也就是说它们的职责不是做IO,而是帮助 调用者寻找当前就绪的设备。#include <sys/select.h>#inc...原创 2018-04-20 21:06:13 · 324 阅读 · 0 评论 -
I/O多路复用
参考:https://www.zhihu.com/question/28594409 I/O多路复用(multiplexing)的本质是通过一种机制(系统内核缓冲I/O数据),让单个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操作。 与多线程和多进程相比,I/O 多路复用的最大优势是系统开销小,系统不需要建立新的进程或者线程...原创 2018-04-19 09:07:54 · 198 阅读 · 0 评论 -
守护进程
守护进程 1.让进程在后台执行。方法是调用fork产生一个子进程,然后使得父进程退出。 2.调用setsid创建一个新会话。控制终端,登录会话和进程组通常是从父进程继承下来的,守护进程要摆脱它们,不受它们影响,其方法是调用setsid使进程成为一个会话组长。 Linux中的进程与控制终端,登录会话和进程组之间的关系:进程属于一个进程组,进程组号(GID)就是进程组长的进程号(PID)。登录会...原创 2018-04-10 15:50:22 · 338 阅读 · 0 评论 -
私有数据--TSD
在多线程环境下,进程内的所有线程共享进程的数据空间,因此全局变量为所有线程共有。在程序设计中有时需要保存线程自己的全局变量,这种特殊的变量仅在某个线程内部有效。如常见的变量errno,它返回标准的出错代码。errno不应该是一个局部变量,几乎每个函数都应该可以访问它;但它又不能是一个全局变量,否则在一个线程里输出的很可能是另一个线程的出错信息,这个问题可以通过创建线程的私有数据(TS...原创 2018-04-15 14:11:28 · 532 阅读 · 0 评论 -
Linux- 线程间同步
线程是允许应用程序并发的执行多个任务的一种机制。一个进程可以有多个线程,如果每个线程执行不同的任务,通过对线程的执行顺序进行控制(调度)就可以实现任务的并发执行。当然了多进程也可以实现任务的并发处理,但是两者之间是有区别的。最大的区别就是拥有的资源不同。进程拥有自己的独立系统资源,而线程没有独立资源,只能和属于同一进程的其他线程共享进程的系统资源。单个资源在多个用户之间共享就会存在一致性的...原创 2018-04-15 11:07:02 · 321 阅读 · 0 评论 -
Linux libconfig配置文件库读取
1 libconfig是什么? Libconfig是一个结构化的配置文件库,它可以定义一些配置文件,例如test.cfg . 它比xml可读性更好,而且更简洁。而且不像xml,它是 type-aware类型自我感知的,因此不需要做string parsing (分词?). 而ini太弱。2 配置文件说明 libconfig支持结构化、层次化的配置。这些配置可以从文件中读取或写入文件,...原创 2018-03-25 10:30:29 · 5368 阅读 · 0 评论 -
高性能定时器------------时间堆
基于升序链表的定时器(https://blog.youkuaiyun.com/destory27/article/details/81748580)和时间轮定时器(https://blog.youkuaiyun.com/destory27/article/details/81750790)都是以固定的频率调用tick,并在其中依次检测到期的定时器,然而执行到定时器上的回调函数.设计定时器的另一种思路是:将所有的定...原创 2018-08-17 11:10:48 · 620 阅读 · 0 评论