- 博客(13)
- 资源 (5)
- 收藏
- 关注
转载 Reactor VS Proactor
两种I/O多路复用模式:Reactor和Proactor 一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理器。两个与事件分离
2014-12-30 21:01:28 768
转载 常见的I/O模型及其区别
首先,介绍几种常见的I/O模型及其区别,如下:blocking I/Ononblocking I/OI/O multiplexing (select and poll)signal driven I/O (SIGIO)asynchronous I/O (the POSIX aio_functions)blocking I/O 这个不用多解
2014-12-30 20:25:03 1734
转载 Linux C 编程内存泄露检测工具(一):mtrace
前言所有使用动态内存分配(dynamic memory allocation)的程序都有机会遇上内存泄露(memory leakage)问题,在Linux里有三种常用工具来检测内存泄露的情況,包括:mtracedmallocmemwatch1. mtracemtrace是三款工具之中是最简单易用的,mtrace是一个C函數,在里声明及定义,函数原型为
2014-12-24 09:14:41 973 1
转载 Linux内存管理
一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内核的支持。Linux在内存管理上份为两级,一级是线性区,类似于00c73000-00c88000,对应于虚拟内存,它实际上不占用实际物理内存;一级是具体的物理页面,它对应我们机器上的物理内存。这里要提到一个很重要的概念,内存的延迟分配。Linux内核在用户申请内存的时候,只是给它分配
2014-12-23 22:21:35 699
原创 cin.get( ) VS cin.getline( )
cin.get()有两种形式:cin.get(char str[], int size)读取整行,cin.get()读取单个字符。1.cin.get(char str[], int size)cin.getline()和cin.get()都是对输入的面向行的读取,即一次读取整行而不是单个数字或字符,但是二者有一定的区别。cin.get()每次读取一整行并把由Enter键
2014-12-23 21:34:25 673
原创 GNU C函数嵌套定义及闭包
最近无意中发现GNU C原来是支持函数嵌套定义的,于是想到函数嵌套定义的用处之一:闭包函数,不多说,代码如下:#include void *outer(int var){ void inner() { printf("inner %d\n", var); } printf("outer\n"); return &inner;}int main(){ void (
2014-12-20 20:14:29 1325
转载 Linux中线程与CPU核的绑定
不管是线程还是进程,都是通过设置亲和性(affinity)来达到目的。对于进程的情况,一般是使用sched_setaffinity这个函数来实现,网上讲的也比较多,这里主要讲一下线程的情况。 与进程的情况相似,线程亲和性的设置和获取主要通过下面两个函数来实现:int pthread_setaffinity_np(pthread_t thread, size_t cpusetsize,
2014-12-09 09:02:25 854
转载 Linux内存管理之mmap详解
一. mmap系统调用1. mmap系统调用 mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用.
2014-12-07 19:36:54 726
转载 Python – __all__ function
在python的module中,可以使用 __all__ 函数来定义这个module像其他引用自己的module导入的变量:例如:alltag.py__all__ = ['bar', 'baz'] waz = 5bar = 10def baz(): return 'baz' alltagtest.pyfrom alltag imp
2014-12-06 18:57:33 784
转载 linux线程资源回收方法
在写网络服务器程序时可能需要实现多线程接收多个客户端的数据,我实现方式比较傻,死循环等待client的connect,connect之后创建thread,这样其实有一个问题,服务器程序需要长期运行,长时间线程的创建,线程资源的回收就是一个问题。Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同时运行的线程数是有限的。而默认的条件下,一个线程结束后,其对应的资源不会被释放,于是
2014-12-06 16:35:10 911
转载 进程与线程的比较
传统进程相当于一个线程的任务。通常一个进程都拥有若干个线程,至少有一个线程。调度:传统中:进程是拥有资源的基本单位和独立调度分配的基本单位。引入线程后:线程作为调度和分派的基本单位,进程作为资源拥有的基本单位。线程基本上不再拥有资源,提高系统的并发程度。通过一个进程中的线程切换不会引起进程的切换,但是一个进程中的线程切换到另一个进程中的线程时将会引起进程的切换。并发性:在引入线程的
2014-12-05 19:46:03 756
转载 指针和引用
#includeusing namespace std; int main(int argc, char** argv){int i=1;int& ref=i;int x=ref;cout"x is " ref=2;int* p=&i;cout"ref = "", i = "}上面的代码
2014-12-03 19:05:17 762
VIM配置文件
2015-07-05
putty_V0.63.0.0.43510830
2015-07-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人