在std::thread (c++11)中使用的函数可以有[[noreturn]]吗?
Could the function used in std::thread (c++11) have [[noreturn]]?
对于std::thread t(foo);
,拥有foo [[noreturn]] () {...}
是否有意义?例如,对于一个分离的线程(用作一种守护进程,直到应用程序完成)?
线程不创建一个新进程,也不使用fork或exec,它创建一个最终肯定会返回的线程。如果你的线程函数永远不会返回,你会挂在std::thread::join
在gcc/clang上用[[noreturn]]标记线程使用的函数会有什么好处吗?
线程函数通常会返回。所以不,它们不能被标记为[[noreturn]]
。
除非它们被编码为无限循环、永久阻塞或调用终止线程或进程的函数。在这种情况下,您可能希望将它们标记为noreturn
。
注意,如果你使用pthread_create
这样的低级函数来创建一个线程或其他在编译时无法定义的函数,noreturn
属性将不会对通过指针调用你的函数的代码产生任何影响。
忽略分离线程的线程函数的返回值
我希望它(std::thread construction)在我的系统上是某种fork + execute的变体,一旦成功,它就没有什么可返回的了。
std::thread创建一个单独的线程(在同一进程中)。Fork +执行多个进程的工作
在gcc/clang上用[[noreturn]]标记线程使用的函数会有什么好处吗?
仅当您传递给std::thread的函数不返回时(即,如果函数调用std::exit、std::terminate、抛出所有情况或开始无限循环,等等)
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将 [[noreturn]] 添加到主函数是否有意义
- 是否可以引入 noreturn noexcept 函数而不是调用 std::terminate
- 在可疑的情况下发出叮当警告:函数'foo'可以用属性"noreturn"声明吗?
- [[noreturn]] 函数指针
- [[noreturn]]函数怎么可能有返回类型
- 为什么要检查[[noreturn]]函数的返回类型?
- 在std::thread (c++11)中使用的函数可以有[[noreturn]]吗?
- 覆盖虚函数[[noreturn]]
- 错误:声明'noreturn'不应返回的函数