不仅仅是线程之间的数据通信

时间:2017-12-01 00:24:27

标签: c linux multithreading pthreads mutex

说我有3个帖子。

1st Thread是我创建线程的控制器 第二和第三是数据处理完成的地方

问题是,第二个线程执行的操作与第三个线程不同。所以我需要一种方法来区分两种不同的逻辑。只是用不同的方法创建线程就足够了吗?

没有!那是因为应该线程2死掉,变得反应迟钝我需要第3个接受它的位置并开始做第二个线程正在做的工作,并创建一个新的作为第3个但是创建一个新的第三个不是我的问题。

正如我所说的那样,如何突然让第3个线程开始执行第二个逻辑而不为前一个第二个线程启动一个全新的线程并重置它的变量

E.g。线程2死亡,线程3现在需要开始执行线程2的工作,我需要创建一个新线程来覆盖线程3。

注意:奖励问题是我如何在不丢失线程2的情况下做到这一点,以便在它不再响应的情况下我仍然可以重复使用它?

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

你选择了错误的工具。如果您需要处理死亡或无响应的任务,则必须使用进程隔离它们,而不是线程。

线程共享执行环境。因此,如果线程破坏或损坏执行环境,它可能会影响所有其他线程。例如,假设您的线程在调整共享结构的过程中死亡。如果您对这些共享结构保持锁定,则其他任何线程都无法访问它们。如果您释放锁定,其他线程可能会访问它们并发现它们处于损坏状态。

使用多个进程进行此类隔离。