为何需单独引入<shared_mutex>头文件?能否将其归入<mutex>头文件?
为什么
std::shared_mutex不在<mutex>中?
C标准的头文件设计遵循模块化和最小依赖原则。<mutex>最初仅包含基础互斥组件(如std::mutex、std::lock_guard),而std::shared_mutex是C17新增的共享互斥特性,被单独划分到<shared_mutex>头文件中。这么做是为了避免不需要共享互斥功能的代码引入额外编译依赖,从而减少编译时间和最终二进制文件的体积。统一到
<mutex>是否更便捷?
从开发者使用的直观感受来说,统一头文件确实能减少手动引用的麻烦,但这与C++标准的模块化设计思路相悖。如果将所有互斥相关类型都合并到<mutex>,会导致该头文件体积膨胀,所有包含它的代码都要编译更多无关内容,对于大型项目而言,编译效率的下降会非常显著。怎么避免类似的头文件遗漏问题?
你可以在项目的公共基础头文件中预先包含常用的同步头文件(比如同时引入<mutex>和<shared_mutex>);也可以借助IDE的代码补全或跳转功能,快速确认目标类型对应的头文件;另外,查阅C++标准文档也是最准确的方式。
内容的提问来源于stack exchange,提问作者Dengzhi Zhang
相关产品推荐
相关产品推荐

