代码改变世界

阅读排行榜

利用yield将异步回调同步化

2017-02-14 15:33 by 放作夥, 2604 阅读, 收藏,
摘要: 《python cookbook》上这段代码利用yield将异步回调同步化,这跟tornado的@gen.coroutine用法好像,感觉tornado的gen.coroutine装饰器背后可能就是这个原理,将被装饰函数的yield逐步遍历并等待被装饰函数下次yield出,若收到生成器结束的异常,则 阅读全文

python weakref弱引用

2017-02-08 15:30 by 放作夥, 2366 阅读, 收藏,
摘要: weakref号称可以解决循环引用gc和创建缓存。我困惑的是python的gc到底能不能解决循环引用的问题,有资料说python的gc是有别的辅助机制可以解决循环依赖,但是我又看见这样的代码。 这段代码试图说明python的gc并不那么智能 阅读全文

define的高级用法

2013-12-04 20:16 by 放作夥, 2140 阅读, 收藏,
摘要: #的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP)\do{ if (EXP)\fprintf(stderr, "Warning: " #EXP "\n"); }\while(0)那么实际使用中会出现下面所示的替换过程:WARN_IF (divider == 0);被替换为do {if (divider == 0)fprintf(stderr, "Warning" "divid 阅读全文

信号的阻塞

2012-06-13 10:59 by 放作夥, 2125 阅读, 收藏,
摘要: 信号的阻塞就是让系统暂时保留信号留待以后发送。(注意:不是不发送,而是延迟发送)一般情况下信号的阻塞只是暂时的,只是为了防止信号打断敏感的操作。1 信号集所有的信号阻塞函数都使用称作信号集的数据结构来表明受到影响的信号。每一个操作都包括两个阶段:创建信号集,传递信号集给特定的库函数。下面说明信号集和相关的数据类型:sigset_t:这个数据类型用来代表信号的集合,有两种方法对它进行初始化。一种是通过函数sigemptyset()使之不包含任何信号,然后用 sigaddset()函数加入需要的信号。另一种方法是通过函数sigfillset()使之包含所有信号,然后通过sigdelset()函数删 阅读全文

Linux内存地址空间

2014-02-26 21:51 by 放作夥, 2124 阅读, 收藏,
摘要: Linux虚拟内存的大小为2^32(在32位的x86机器上),内核将这4G字节的空间分为两部分。最高的1G字节(从虚地址0xC0000000到0xFFFFFFFF)供内核使用,称为“内核空间”。而较低的3G字节(从虚地址0x00000000到0xBFFFFFFF),供各个进程使用,称为“用户空间”。因为每个进程可以通过系统调用进入内核,因此,Linux内核空间由系统内的所有进程共享。于是,从具体进程的角度来看,每个进程可以拥有4G字节的虚拟地址空间(也叫虚拟内存)。 每个进程有各自的私有用户空间(0~3G),这个空间对系统中的其他进程是不可见的。最高的1GB内核空间则为所有进程以及内核所共享. 阅读全文
上一页 1 2 3 4 5 6 7 ··· 25 下一页