代码改变世界

CUtilityCode

2016-12-19 14:21 by 钱吉, 279 阅读, 0 推荐, 收藏, 编辑
摘要:(1) 基于boost的生产者/消费者队列 阅读全文

读写锁的实现

2014-07-18 21:59 by 钱吉, 419 阅读, 0 推荐, 收藏, 编辑
摘要:读写锁在多线程应用中经常用到。适用于读线程多余写线程的场合。对读线程读取共享资源时不加锁,而对写线程写共享资源时进行加锁控制。先说一下读线程控制:只要此时没有写操作,就可以进行读取。一旦有写操作,则阻塞等待。对于写线程来说,如果此时有读线程正在读取资源,则等待其读取完,然后判断是否所有的读线程是否已... 阅读全文

将博客搬至CSDN

2014-07-18 13:06 by 钱吉, 286 阅读, 0 推荐, 收藏, 编辑
摘要:就这样吧! 阅读全文

关于宏##的使用注意一点

2014-03-08 23:02 by 钱吉, 13780 阅读, 0 推荐, 收藏, 编辑
摘要:在看《C语言高级编程》时,里面有个关于宏##的题目:1.已知#define A “menu”#define B “osd”,若请使用宏A,B表示出字符串”menuosd”答案:1 答案1:#define C A B答案2:#define _C_(a,b) a##b#define C(a,b) _C_(a,b)然后我实际动手测试了一下,先来第一种:#include #define A "menu"#define B "osd"#define STR A Bint main(int argc, char *argv[]){char *p = STR;retu 阅读全文

如何创建一个简单的C++同步锁框架(译)

2013-11-17 14:38 by 钱吉, 8598 阅读, 0 推荐, 收藏, 编辑
摘要:翻译自codeproject上面的一篇文章,题目是:如何创建一个简单的c++同步锁框架目录介绍背景临界区 & 互斥 & 信号临界区互斥信号更多信息建立锁框架的目的BaseLock类临界区类构造/拷贝构造析构Lock/TryLock TryLockFor 解锁信号量类构造/拷贝构造析构Lock/TryLock/TryLockFor 解锁释放互斥类构造/拷贝构造析构Lock/ TryLock/TryLockFor 解锁无锁类实现自动释放锁类实现例子声明同步对象声明带初始计数的信号量对象声明跨进程的互斥/信号量对象同步示例1 (手动加锁) 同步示例2 (自动加锁) 同步示例3 (Tr 阅读全文

线程池(译)

2013-11-17 14:04 by 钱吉, 1398 阅读, 0 推荐, 收藏, 编辑
摘要:这是我翻译的codeproject上面的一篇文章,题目是:线程池一 简介 我的应用中,需要将数据备份到不同的地方(CD,USB,网络共享)。如果我只用单线程来做这件事情,需要花2个小时以上。而如何改善性能对我来说是一个挑战,最终我用多线程来实现了这个问题,结果非常可观,只用了30分钟就完成了我的工作。 其实在刚开始开发时,备份耗费了一整天,后来我被迫增加频率到1个小时。现在我发现了一个问题:实际中由于频率过低导致线程频繁的重复创建和销毁。怎么解决这个问题?为什么线程不能被重复利用呢?所以这就是线程池的由来。你是否需要线程池?你有多个请求需要被重复和并行处理吗?每个请求能独立工作吗?你需要等.. 阅读全文

如何利用循环代替递归以防止栈溢出(译)

2013-11-15 09:36 by 钱吉, 21187 阅读, 3 推荐, 收藏, 编辑
摘要:摘要:我们经常会用到递归函数,但是如果递归深度太大时,往往导致栈溢出。而递归深度往往不太容易把握,所以比较安全一点的做法就是:用循环代替递归。文章最后的原文里面讲了如何用10步实现这个过程,相当精彩。本文翻译了这篇文章,并加了自己的一点注释和理解。目录 简介模拟函数的目的递归和模拟函数的优缺点用栈和循环代替递归的10个步骤替代过程的几个简单例子更多的例子结论参考协议1简介 一般我们在进行排序(比如归并排序)或者树操作时会用到递归函数。但是如果递归深度达到一定程度以后,就会出现意想不到的结果比如堆栈溢出。虽然有很多有经验的开发者都知道了如何用循环函数或者栈加while循环来代替递归函数,以防止. 阅读全文

c++模板函数实例化的偏序机制

2013-08-17 12:28 by 钱吉, 2933 阅读, 1 推荐, 收藏, 编辑
摘要:一:废话 今天在stackoverflow上看到一个关于c++模板specialization的问题:http://stackoverflow.com/questions/18283851/template-specialization-in-case-of-multiple-base-templates-in-c/18283933?noredirect=1#comment26823443_18283933他的English好像不是很标准(说不定是India三哥,哈哈),但比我强多了。废话不多说,问题简述如下://#1template void foo(X a){ cout void... 阅读全文

他山之石(链接集锦)

2013-08-15 10:56 by 钱吉, 542 阅读, 0 推荐, 收藏, 编辑
摘要:一:博客相关1 如何在github上面写博客? 1.1http://beiyuu.com/github-pages/ 1.2http://www.cnblogs.com/P_Chou/archive/2013/01/20/build-github-blog-page-07.html 1.3http://luchanghong.com/web/2012/09/01/start-write-blog-on-github.html 1.4 http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html 1.5 http://... 阅读全文

英语学习

2013-08-12 16:31 by 钱吉, 815 阅读, 0 推荐, 收藏, 编辑
摘要:为了成为一个高级码农,良好的英语写作,阅读,口语表达能力,三者缺一不可。抽点时间学习英语,将来一定受益终身。此文将列举常用的口语,不间断的更新。收获在于积累!Let's go***********************************************************************************************1 这是一个相当宽泛的问题 That's an incredibly broad question2 这不是一个必须遵守的(硬性)规定 This is not a hard-and-fast rule3 如果参数同时是输 阅读全文