相关疑难解决方法(0)

如何在线程之间传播异常?

我们有一个单个线程调用的函数(我们将其命名为主线程).在函数体内,我们生成多个工作线程来进行CPU密集型工作,等待所有线程完成,然后在主线程上返回结果.

结果是调用者可以天真地使用该函数,并且在内部它将使用多个核心.

到目前为止都很好..

我们遇到的问题是处理异常.我们不希望工作线程上的异常使应用程序崩溃.我们希望函数的调用者能够在主线程上捕获它们.我们必须捕获工作线程上的异常,并将它们传播到主线程,让它们继续从那里展开.

我们应该怎么做?

我能想到的最好的是:

  1. 在我们的工作线程上捕获各种异常(std :: exception和我们自己的一些).
  2. 记录异常的类型和消息.
  3. 在主线程上有一个相应的switch语句,它重新抛出工作线程上记录的任何类型的异常.

这有一个明显的缺点,即只支持一组有限的异常类型,并且每当添加新的异常类型时都需要修改.

c++ multithreading exception

103
推荐指数
5
解决办法
4万
查看次数

标签 统计

c++ ×1

exception ×1

multithreading ×1