摘要:最近一直在参与重构项目中的代码。 之前写的代码最大的问题在于“想到哪里写到哪里”,没有从功能上先整体地进行分析,然后将类似的业务分类到一些,有条理地书写代码。应该来说本来是可以这么去做的, 因为我们花了不少时间去做详细设计。写代码的同事已经对业务的逻辑有了相对完整的理解。但由于不少同事在写代码方面经验还比较少,因此很难做到这一点。所以就想到哪里写到哪里,也比较少审视前后写的代码一起来看是不是结构...
阅读全文
摘要:在这篇博文里,我提到了一个例子,说的是使用C++实现类型安全的printf。这个例子很惊艳,但是在我写程序的时候,并非那么“迫切”地需要它出现在我的工具箱中,因为它并不比普通的printf方便,而且它没有出现的标准库中。所以自己也懒得整。相反,这个函数的兄弟,sprintf,倒是一个非常需要的函数。不仅仅是因为需要它类型安全,而是 sprintf 有比 printf 更多的麻烦: 首先它确...
阅读全文
摘要:《C++ concurreny in action》 第五章 C++的内存模型和原子操作 5.1 Memory model basics (内在模型基础) Memory model 涉及两个方面:structural 和 concurrency structural 是基础,主要是对象的布局 5.1.1 Objects and memory location The C++ Standa...
阅读全文
摘要:唐风 www.cnblogs.com/liyiwen 《C++ concurreny in action》 第四章 Synchronizing concurrent operations 这一章主要讲C++11中的进行线程同步的方法 4.1 Waiting for an event or other condition 经常遇到的一种场景是一个线程A需要等待另一个线程B完成一些“事”(操作)才能往下运行继续处理。 有以下几种“办法” 一,设置一个多个线程都能访问到的变量,B线程一旦完成自己的操作,就把这个全局的变量设为某个值,而线程A则 不断地去检查变量的值是不是已经设置为这个...
阅读全文
摘要:作者:唐风 主页:www.cnblogs.com/liyiwen C++11已经问世两年了,各大编译器也都加紧跟进对C++11的特性和库的实现(这里有一份GCC,MSVC,CLANG的对C++11的支持情况表)。在我们还没有来得及消化新的C++的时候,C++标准委员会并没有停下。从C++11正式发布到今天,他们一直在为C++14(以及以后的C++17)努力工作着。4月20日,来自C++标准委员会的网站上的一篇新闻说,用于 C++14 的投票草案已经完成。这意味着 C++14的内容基本上要定型了,这其中包括: generic lambdas(泛型的lambda表达式,也就是...
阅读全文
摘要:唐风 www.cnblogs.com/liyiwen 《C++ concurreny in action》 第三章 sharing data between threads 3.1 线程间共享数据的“问题” invariants 被破坏(比如说一个读一个写) 3.1.1 race conditions 条件竞争是: In concurrency, a race condition is anything where the outcome depends on the relative ordering of execution of operations on two o...
阅读全文
摘要:第一章 Why use concurrency,There are two main reasons to use concurrency in an application: separation of con-cerns and performance.(这句写得很精辟:) 我:分离实现逻辑,然后使用“状态迁移表”这种消息驱动的方式,用在APP的设计上非常的方便。 什么时候不要使用con...
阅读全文
摘要:作者:唐风 主页:http://www.cnblogs.com/muxue C++11 语言核心的改进中,最为关注的有 rvalue reference (这里有一篇拙作),lambda,variadic template。rvalue 规则稍微复杂,但一旦理解和记住了,应用上就没有什么困难...
阅读全文
摘要:作者:唐风 原载:www.cnblogs.com/liyiwen 关于类型擦除,在网上搜出来的中文资料比较少,而且一提到类型擦除,检索结果里就跑出很多 Java 和 C# 相关的文章来(它们实现“泛...
阅读全文
摘要:Expression Template 的延迟计算和消除临时变量。
阅读全文