如何通过线程提高程序的公平性? C ++

时间:2016-02-22 20:31:51

标签: c++ multithreading mutex race-condition

我有一个解决餐饮哲学家问题的任务。我已经实现了程序的逻辑(由于测试它是正确的)。

然而,由于有大量的哲学家(> 2000线程)和短暂的工作时间(5秒),这变得不公平,最初的哲学家比哲学家吃的频率更高。我认为原因是按照开启的顺序。

我的实现基于mutexstd::atomic,以避免主动等待(不断尝试trylock())我放置wait(sleep_time)

第一个问题,如果我的实现基于条件变量会更快吗?

Secon问题,如何避免因启动大量线程所需的时间而导致的不公平行为?以随机顺序启动它们?

0 个答案:

没有答案