
C++
Bruce Jia(上海)
谦卑先于伟大。
每一天都应该从计划开始,以自省结束。
早做安排,做到每周有计划,每月有计划,每年有计划;
持之以恒,做到每周有收获,每月有收获,每年有收获;
展开
-
C++11多线程开发之this_thread名字空间
如何使用C++11中的this_thread提供的函数例如yield, get_id原创 2022-08-12 16:04:36 · 448 阅读 · 0 评论 -
给C++ std::call_once传递可变参数
给c++ std::call_once传递可变长参数原创 2022-08-12 14:22:54 · 561 阅读 · 0 评论 -
在C++多线程中使用std::call_once保证仅仅执行一次
C++标准库中的std::call_once函数保证只调用一次,常常用于初始化一些关键资源。原创 2022-08-12 10:31:35 · 679 阅读 · 0 评论 -
C++11并发支持库函数std::call_once
C++语言自从C++11开始对并发编程(concurrency)做了很多的支持,例如atomic,thread,mutex,condition_variable,lock,async,future等等众多喜闻乐见的好宝贝,另外不那么招人注意的也有几个值得称赞一番,例如stdcall_once。......原创 2022-07-19 23:46:48 · 499 阅读 · 0 评论 -
C++语法之function-try-block
C++里边有个看着比较怪异的语法,叫做“function-try-block”。原创 2022-06-29 22:01:16 · 673 阅读 · 0 评论 -
复习C++重读名著Effective STL - item 18 vector<bool>的缺点分析
复习C++重读名著Effective STL之第18条原创 2022-06-05 18:07:34 · 269 阅读 · 0 评论 -
Qt v5.6.2 bug
Qt版本从5.6.0升级到5.6.2后发现一个regression bug, 一个35MB的文件下载后不能解压,这个文件的大小总是64MB。跟踪代码到Qt中发现是调用WriteFile出错,然后google东找西找瞎怀疑一通,最后从Qt 5.6.2 release notes中看到这个known issuehttps://bugreports.qt.io/browse/QTBUG-56原创 2017-01-09 15:42:03 · 1172 阅读 · 0 评论 -
[转] C++测试框架的选择
转自: http://blog.whitejadesoft.com/?p=225 转自: http://www.cppblog.com/jinq0123/archive/2010/04/13/112430.html C++测试框架的选择 (金庆的专栏) 本文以表格形式总结了 “Exploring the C++ Unit Testing Framework Jungle” ( http://gamesfromwithin.com/exploring-the-c-unit-testing-fra原创 2010-12-14 16:54:00 · 1455 阅读 · 2 评论 -
编写异常安全的代码永远不会亏本
今天发现程序中有一个bug,是由异常安全引起的。代码中为了同步数据的访问,使用了一个critical section,当代码出现异常时不会调用LeaveCriticalSection,所以出现了死锁。这是一个很常见的问题,也很容易解决,即为critical section编写一个lock类,使用构造函数和析构函数来执行EnterCriticalSection和LeaveCriticalSe原创 2009-09-21 15:10:00 · 1122 阅读 · 2 评论 -
ACE_Reactor中的handle_output
一直对ACE reactor framework中的handle_output困惑不解,而且个人觉得select是个很恶心的函数。直到前段时间工作上需要用到网络编程,又把C++网络编程卷2找出来看看,写了几个小程序做实验才渐渐明白了reactor中都handle_output的触发条件。回想以前抱着书看了很久就是懒得动手写代码,结果总是一知半解的,看来“实践出真知”一点都不假。 关于h原创 2009-01-31 13:28:00 · 6601 阅读 · 0 评论 -
芝麻杂记
【写的是芝麻大的小事情】 春节期间有个愿望就是看看boost,写几行代码学习下。选择了boost.asio,想熟悉了之后和ACE库(比如Proactor framework)做一下比较。可惜生性慵懒,放假期间一直忙于测试腾讯的小游戏,所以没有做这件事情。上班前一天终于得闲,有功夫折腾了。 懒得自己编译boost库了,去boostpro上下载比自己编译来的快。下载了boost 1原创 2009-02-04 16:06:00 · 1115 阅读 · 0 评论 -
怀念VC6中的快捷键
VS2005, 2008中的快捷键实在是不快捷。比如书签的快捷键是Ctrl-K, Ctrl-K, 跟VC6中的F2比起来实在是太恶心了。 还有一个更恶心的是调试时候找不到内存窗口(Memory Window), 看来C/C++程序员已经是受歧视的一部分了。Google之后才找到对应的快捷键是Ctrl-Alt-M, 1 (or 2, 3, 4),真的很麻烦。原创 2009-02-10 19:31:00 · 1258 阅读 · 0 评论 -
Differences Between C++ Templates and C# Generics
C# Generics and C++ templates are both language features that provide support for parameterized types. However, there are many differences between the two. At the syntax level, C# generics are a simpl原创 2009-02-17 10:14:00 · 1066 阅读 · 0 评论 -
有限的生命,无限的bug
现在很少用C++了,以致于慢慢地生疏起来。上周发现一个小bug,真的感到汗颜呐。是常见的初始化错误,示例代码如下: char * buff = new char[len];memset (byff, 0, sizeof(buff)); 其中len是前边通过计算得到的值。明眼人一看就知道问题出在哪里了,呵呵。 QA报告bug的时候我在自己的环境中没有重现,也就没有太在原创 2009-06-21 14:19:00 · 976 阅读 · 0 评论 -
VC10和C++ 0x (1) - lambda表达式
对优快云的博客排版实在是不敢恭维,我用WLW花了好几个小时才翻译完这篇博客的第一部分,发布出来结果代码部分错乱不堪。又花了一刻钟在优快云的编辑器里在线编辑重新排版,结果还是一个鸟样!真受不了。 如果看着不爽的朋友可以看这里:http://www.cnblogs.com/brucejia/archive/2009/09/05/1560675.html原创 2009-09-03 22:51:00 · 4938 阅读 · 4 评论 -
VC10和C++ 0x (2) - auto
auto这个关键字来自C++ 98标准。在C++ 98中它没有什么作用,C++ 0x中“借用”它来作为自动类型推演(automatic type deduction)。当auto出现在声明中时,它表示“请用初始化我的表达式类型作为我的类型”。例如下面代码: C:/Temp>type autocat.cpp#include #include #in原创 2009-09-11 00:10:00 · 1118 阅读 · 0 评论 -
VC10和C++ 0x (3) - static_assert
static_assert断言(assertion)是提高代码质量的有效武器。C++标准库中的assert, MFC中的ASSERT宏/VERIFY宏都是断言的例子,它们的共同点是在运行时对程序状态进行判断,例如检查函数的参数有效性,检查类的不变式(invariant)等。而C++ 0x中的静态断言呢,和运行时的断言不一样,它是编译时执行检查的。看下面的例子: // fil原创 2009-09-11 16:07:00 · 1366 阅读 · 0 评论 -
ACE备忘录
编译ACE时的选项和可能遇到的问题 - 1. 支持Unicode在config.h头文件中, #define ACE_HAS_WCHAR这个宏定义告诉ACE你的系统是否有wchar_t类型。通常情况下在Windows平台上编译ACE我们会引入头文件"windows-common.h",这个文件中定义了ACE_HAS_WCHAR #define ACE_USES_W原创 2009-01-31 13:38:00 · 1311 阅读 · 0 评论