c
文章平均质量分 79
uxff
这个作者很懒,什么都没留下…
展开
-
Linux c 可变参函数 和可变参宏
C/C++提供了函数的可变参数(variadic)机制。printf就是一个使用可变参数的典型,它的原型声明为,int printf(const char *fmt, ...); 其中返回值为实际输出字符个数,fmt为格式控制字符串,而”…”便声明了一个可变参数,你可以根据传递0个或多个参数给printf。printf内部会根据格式控制串中的格式指定符号(d, f转载 2017-07-13 14:15:52 · 1542 阅读 · 0 评论 -
linux 下实现简单的异步多线程任务分发
linux 下实现简单的异步多线程任务分发异步多任务并行处理在linux场景下有很多种实现方式。 当前主流有几种方案:多进程方案,1 master+N workers 方式,类似apache等等;多线程方案,或维护一个线程池。 本例子实现一个简单的单进程多线程异步分发任务模型。本实现有如下特点: * 维护线程简单 * 直接可以传送函数,函数的参数 * 线程之间使用消息队列通信,实时性原创 2017-07-13 17:16:39 · 1331 阅读 · 0 评论 -
linux环境内存分配原理 mallocinfo
Linux的虚拟内存管理有几个关键概念:Linux 虚拟地址空间如何分布?malloc和free是如何分配和释放内存?如何查看堆内内存的碎片情况?既然堆内内存brk和sbrk不能直接释放,为什么不全部使用 mmap 来分配,munmap直接释放呢 ?Linux 的虚拟内存管理有几个关键概念: 1、每个进程都有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址; 2、转载 2017-07-13 17:56:32 · 779 阅读 · 0 评论 -
腾讯libco实现原理分析
我们以example_echosvr.cpp为例子,这个例子的作用就是读取客户端的请求,然后按原样返回给客户端。在它的main函数里创建了proccnt进程,每个进程里有cnt个task。这里的proccnt和cnt都是来自运行参数。for(int i = 0; i < cnt; i++) { task_t * task = (task_t*)calloc( 1,sizeof(task_t)原创 2017-07-31 19:27:50 · 747 阅读 · 0 评论 -
linux gcc -l参数和-L参数用法含义
gcc -l参数和-L参数-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest原创 2017-09-27 13:08:42 · 9913 阅读 · 2 评论