- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我开始练习使用 C++11 std::thread
。通常,对于 Win32,只要我有线程句柄,我就需要调用 CloseHandle
。当我使用 C++11 native_handle
时,是否仍需要调用 CloseHandle
?另外,如果我不使用 C++11 native 句柄,线程句柄是否得到正确清理?
最佳答案
当然不是。
线程对象有一个析构函数,它释放对象可能获取的任何操作系统特定资源。
实际上,每个(好的)C++ 对象都有一个析构函数,可以清除需要清理的所有内容,并且这个析构函数(当代码编写正确时) 由程序自动调用。
这个习语被称为 RAII - 每个对象都有一个构造函数来收集对象所需的资源,以及一个对等析构函数,当对象超出范围时释放它们。
如果操作得当,这项技术比 C 风格的手动资源管理或“高级”垃圾收集器强大得多。
忠告,如果标准为您提供了一些实用程序,请完全忽略相应的 Win32 API。标准不依赖操作系统特定的API才能正常工作。
关于c++ - 使用 C++11 std::thread native_handle 以及我是否需要 CloseHandle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934749/
我有一些(更多)关于调用 CloseHandle 的问题。 所以,the SO citizens have spoken, and you must always close a handle . 问
在我的应用程序中,我打开了一个共享内存的句柄,我可以读取/写入共享内存。我这样打开 handle : //Map the shared memory d_to_mbx_mem_arr[idx
如果句柄被创建为函数参数,它会在函数结束时自行关闭吗? 例如: int readMem(HANDLE processHandle, int address) { int memValue =
我有一个主线程接收需要一些时间的 Action 。所以我创建了一个线程并将工作委托(delegate)给它。主线程在接收作业时调用此执行函数。每个作业都执行此执行。 Return_type execu
我有一个 Class 类,其中有一个成员属性 HANDLE handle 到一个线程(我们可以假设它被设置为 NULL 在那个点)。在某些时候,Class 中的一个方法分派(dispatch)它自己的
我正在阅读 http://support.microsoft.com/kb/243953他们在其中解释了如何将应用程序限制为单个实例。互斥锁在构建和销毁时创建,它们调用 CloseHandle。 这让
我绞尽脑汁想弄清楚串行端口何时完成关闭,以便我可以重新打开它。事实证明,CloseHandle() 在端口实际解锁之前返回。 我正在使用 CreateFile(FILE_FLAG_OVERLAPPED
我需要从上下文菜单启动一个单独的进程/应用程序;我正在使用函数 launch_program 来执行此操作。一旦创建的进程终止,我不关心退出代码,我只希望能够启动它。我的问题是:如果变量 startu
在 CloseHandle() 中关闭其句柄后,进程未终止。 我有一个由 CreateProcess() api 创建的进程。即使在关闭其句柄后,它仍在运行。 在 msdn 中,他们说 CloseHa
我有一个 GWT 应用程序,我想在用户离开应用程序以强制注销并删除任何数据等时运行一些代码。 为此,我使用 CloseHandler 并使用 Window.addCloseHandler 注册它。 我
我编写了一个自己开发的串行端口类,为了简单起见,我使用了阻塞/同步/非重叠。我浏览了所有 MSDN 文档,这对我来说很困难。 我在从端口打开、传输或接收字节方面没有任何问题。所有操作都是同步并且没有线
我只想创建一个线程,然后立即调用 CloseHandle 并让线程自行消亡,这样我就不必在“原始”线程中进行额外的清理工作(清理本身并不难) ,但这意味着我想避免大量额外的簿记)。 MSDN 说在线程
我做了一个简单的例子。 我只想知道在将 handle 重新附加到新进程之前是否需要关闭 handle ? DWORD g_dwPid = 0; HANDLE g_hProcess; int _tWin
这个问题在这里已经有了答案: Serial Comm using WriteFile/ReadFile (4 个答案) 关闭 9 年前。 我想读取串行端口的传入数据并处理它们(Windows: na
我决定使用 Wait Functions (WaitForSingleObject、WaitForMultipleObject 等) 来正确退出线程。在这种情况下,问题是我是否需要显式调用 Close
长话短说 假设我实现了一个类,该类实现了一个返回 HANDLE 的 API。假设我的类(class)是 HANDLE 的所有者并负责创建、更新和关闭它。 如何防止我的 API 调用者关闭我的句柄并破坏
我需要打电话吗 CloseHandle()在 EnumWindows() 返回的句柄上? 最佳答案 您只能在 kernel32 中的函数返回的句柄上使用 CloseHandle()。它们是引用计数的,
事实 1:由于某些客户端限制,我们无法使用异常机制。 事实 2:关闭已经关闭的句柄会引发异常。 不考虑提及事实的原因,将调用 GetHandleInformation() 来检测句柄是否仍然有效,并且
根据 MSDN 规范,CloseHandle 在调试器下运行时,如果传递给它的句柄无效,则会引发异常。 因为我想要干净的代码,所以我插入了一些代码来捕捉它。但是,它不起作用,异常未被捕获。 #incl
在 Windows 中创建命名对象时,可以通过调用 GetLastError() 并检查 ERROR_ALREADY_EXISTS 来查明该对象是否已经存在。 有没有办法提出双重问题:我的 Close
我是一名优秀的程序员,十分优秀!