线程作业未完全完成

问题描述 投票:0回答:0

直到最近(Vulkan)我才真正对多线程做过很多事情,所以我不太精通它。

我这里有一个小测试程序: https://github.com/seishuku/ThreadPool_TEST

它应该并行运行 4 个作业,然后当所有作业都完成后,打印结果。

问题是,有时他们并没有全部设置“完成”标志,更糟糕的是,有时它甚至没有命中断言(继续进入主线程并超时)。

以我有限的多线程知识,我无法为我的生活找出原因。我敢肯定这可能真的很愚蠢。

我已经为标志尝试了原子,volatile 关键字(认为编译器可能正在优化某些东西),互斥体,使用信号量......都得到相同的结果。

编辑: 忘记了,这主要是在带有 VS2022 的 x64 windows 上,但我在 Linux 和 GCC 上得到了类似的结果。

multithreading pthreads pthreads-win32
© www.soinside.com 2019 - 2024. All rights reserved.