C++ 中的延迟初始化与并发编程技术
1. 延迟初始化(Lazy Initialization)
在玩电子游戏时,你可能会遇到图形中纹理缺失的情况,或者当角色靠近某个图形资源时,该资源突然出现。这种现象其实就涉及到了延迟初始化。延迟初始化的目的是将对象的构造推迟到真正需要的时候。这样做可以让系统仅分配所需的资源,还能加快代码的执行速度,特别是在 CPU 负载较高的情况下,比如系统启动时。避免了在创建暂时不需要的大对象上浪费 CPU 周期,从而让 CPU 有更多资源处理其他请求。不过,延迟初始化也有缺点,可能会导致对象无法及时加载,就像在游戏中看到的那样。
在程序加载时,内核也会以延迟的方式分配虚拟内存,即直到引用可执行代码页时才会加载。
下面通过一个 C++ 示例来展示延迟初始化:
#include <iostream>
#include <chrono>
#include <optional>
#include <string_view>
#include <thread>
using namespace std;
using namespace std::literals::chrono_literals;
struct Settings {
Settings(string_view fileName) {
cout << "Loading settings: " << fileName << endl;
}
~Settings() {
超级会员免费看
订阅专栏 解锁全文
58

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



