在C++中使用pthread_exit()安全吗
Is it safe to use pthread_exit() in C++?
pthread_exit()
没有堆栈展开机制。我们能完全避免在C++中使用pthread_exit()
吗?或者,在C++中,我们是否需要这个API而不是从线程返回函数?
pthread
函数是特定于平台的。C++有自己的依赖于平台的线程API。它没有对应于pthread_exit
的函数。使用std::thread API,不必担心pthread。
如果需要在不显式返回到线程启动函数的情况下在中间终止线程,请抛出异常并在启动函数中捕获它。这将正确展开堆栈。
引用文档:
当第一次调用main()的线程以外的线程从用于创建它的启动例程返回时,会对pthread_exit()进行隐式调用。函数的返回值用作线程的退出状态。
这意味着你不需要自己调用它,除非你想避免从该函数返回(可能是裸函数,或者中断处理程序或一些非常低级的东西)。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 虚拟决赛作为安全
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 如何将元素添加到数组的线程安全函数?
- C++中的线程安全删除
- 通过网络、跨平台传递std::变体是否安全
- 在std::thread中,joinable()然后join()线程安全吗
- 使用std::istream::peek()总是安全的吗
- 从值小于256的uint16到uint8的Endian安全转换
- 在c++队列中使用pop和visit实现线程安全
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 全局变量 多读取器 一个写入器多线程安全?
- 安全到标准:移动会员?
- AcquireCredentialsHandleA() 返回 PFX 文件的0x8009030e(安全包中没有可用的凭据
- 共享队列的线程安全
- boost::文件系统::recursive_directory_iterator多线程安全
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- 多个线程调用exit()时的安全静态析构函数