C++并发与实用工具之旅
1. 引言
从终端用户的角度来看,理想的标准库应能直接满足各种需求。对于特定应用领域,大型商业库或许能接近这一理想状态,但C++标准库并非如此。它旨在为大多数应用领域的多数人提供实用组件,即服务于所有需求的交集,而非并集。此外,它也涵盖了一些重要应用领域的支持,如数学计算和文本处理。
2. 资源管理
2.1 资源管理的重要性
任何非平凡程序的关键任务之一就是管理资源。资源是需要获取并在后续(显式或隐式)释放的东西,如内存、锁、套接字、线程句柄和文件句柄等。对于长时间运行的程序,若不及时释放资源(即“泄漏”),可能导致严重的性能下降,甚至崩溃。即使是短程序,资源泄漏也可能造成问题,如因资源短缺使运行时间大幅增加。
2.2 RAII技术
标准库组件设计为不泄漏资源,依靠构造函数/析构函数对来管理资源,确保资源不会超出负责它的对象的生命周期。这就是“资源获取即初始化”(RAII)技术,它与异常处理能正确交互。例如,标准库的锁类就使用了该技术:
mutex m; // used to protect access to shared data
// ...
void f()
{
unique_lock<mutex> lck {m}; // acquire the mutex m
// ... manipulate shared data ...
}
在这个例子中, unique_lock 的构造函数获取互斥锁,析构函数释放
超级会员免费看
订阅专栏 解锁全文
635

被折叠的 条评论
为什么被折叠?



