我开始习惯使用C ++ 11 outlet = gson.fromJson(realmOutlet.getPayload(), Outlet.class);
binding.setOutlet(outlet);
。通常,使用Win32时,每当我有一个线程句柄时,我都需要调用std::thread
。当我使用C ++ 11 CloseHandle
时,是否仍需要调用CloseHandle
?另外,如果我不使用C ++ 11本机句柄,是否可以正确清理线程句柄?
答案 0 :(得分:3)
当然不是。
Thread Objects有一个析构函数,它释放对象可能获取的任何特定于操作系统的资源。
实际上,每个(好的)C ++对象都有一个析构函数,它可以清除需要清理的内容和这个析构函数(当代码编写正确时),程序会自动调用 。
这个成语被称为RAII - 每个对象都有一个构造函数,它收集对象需要的资源,以及一个对等析构函数,当对象超出范围时,它会释放它们。
如果操作正确,这种技术比C风格的手动资源管理或“高级”垃圾收集器更强大。
作为建议的一句话,如果标准为您提供了一些实用程序,请完全忽略相应的Win32 API。标准不取决于特定于操作系统的API才能正常工作。
答案 1 :(得分:2)
不,它们是RAII,就像共享指针一样。 您需要担心的主要事项是:
详细信息。