阅读是汲取知识的有效途径。
C++获取枚举元素数量
C++获取枚举元素数量 最近有个特殊需求,需要获取一个枚举类型的元素数量,于是学到了以下骚操作。 解释 操作源自网站stack overflow的一个提问《是否可以确定 c++ 枚举类的元素数量?》。 ...
阅读是汲取知识的有效途径。
C++获取枚举元素数量 最近有个特殊需求,需要获取一个枚举类型的元素数量,于是学到了以下骚操作。 解释 操作源自网站stack overflow的一个提问《是否可以确定 c++ 枚举类的元素数量?》。 ...
C++条件变量wait方法的误区 查看GitHub上的ThreadPool时发现以前理解上的一个误区。 wait的重载 C++条件变量用于等待的相关方法wait、wait_for、wait_until存在一个重载参数Predicate pred: 1 2 template< class Predicate > void wait( std::unique_lock<std::mutex>& lock, Predicate pred ); cppreference对其的说明: wait 导致当前线程阻塞直至条件变量被通知,或虚假唤醒发生。可以提供 pred 以检测虚假唤醒。 ...
高性能网络模式:Reactor 和 Proactor 高效进行IO操作的方案,不外乎这二种。 说明 Reactor 是非阻塞同步网络模式,感知的是就绪可读写事件。 在每次感知到有事件发生(比如可读就绪事件)后,就需要应用进程主动调用 read 方法来完成数据的读取,也就是要应用进程主动将 socket 接收缓存中的数据读到应用进程内存中,这个过程是同步的,读取完数据后应用进程才能处理数据。 ...
C++项目惯例 这里没有标新立异,对于老项目务必做到和历史代码风格统一,对于新项目做到和团队风格统一,对于没有明确要求或个人的项目做到前后风格一致。 我的风格 这里推荐一个Google 开源项目风格指南,比较全面;至少微软的指南我没找到有这个全面的。 ...
C++的前向声明 有些时候,尤其是写会提供给其他人使用的库的时候,不想暴露过多细节,也不想让使用库的人引入不必要的头文件,可以使用前向声明避免在头文件引入其他头文件而可以使用其中的类型。 ...
无法接收UDP广播的原因分析 业务需求,需要UDP广播和接收消息,但是实测发现UDP广播的消息使用nc命令可以收到,在程序中收不到,在此记录分析过程。 原因 查询Stack Overflow,看到一个同类型问题:Python UDP Broadcast not sending,其中Adam Rosenfield提到: ...
CMake注意事项 使用CMake时,不熟悉的内容千万不要想当然,主观臆断保不齐就被“特性”坑了。 注意事项 判断环境变量或字符串的误区 参考官方文档《if()》一节: A quoted string always evaluates to false unless: The string’s value is one of the true constants, or Policy CMP0054 is not set to NEW and the string’s value happens to be a variable name that is affected by CMP0054’s behavior. 带引号的字符串始终评估为 false ,除非: ...
C++什么时候应该用decltype decltype通常应该被封装在通用(模板)库中,仅在完全必要的情况下使用。除此以外,非滥用的auto才是日常编程的语法糖。 1. 什么是decltype decltype 的名称是由 “declare” 和 “type” 组合而来,表示它用于声明类型。 ...
C++单例模板 单例的写法基本都相同,定义一个模板方便使用单例模式。 分析 单例模式需要确保资源初始化是线程安全的,因而出现了以下几种方法(选自《C++ 单例模式的模板实现》、《单例模式很简单?但你真能写对吗?》): ...