当使用posix线程时,是否有某种方法可以“保护”主线程免受工作线程引起的错误(例如解除引用的空指针,除零等). “工作线程”是指由pthread_create()创建的posix线程.
不幸的是,我们不能使用例外 – 所以没有“捕获”等.
这是我的测试程序(C):
void* workerThreadFunc(void* threadId) { int* a = NULL; *a = 5; //Error (segmentation fault) pthread_exit(NULL); } int main() { cout << "Main thread start" << endl; pthread_t workerThread; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_JOINABLE); pthread_create(&workerThread,&attr,workerThreadFunc,(void*)0); pthread_join(workerThread,NULL); cout << "Main thread end" << endl; }
在上面的示例中,workerThread引起的错误将终止整个程序.但我希望主线程继续运行,尽管这个错误.这有可能实现吗?
解决方法
原文地址:https://www.jb51.cc/c/116258.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。