ACc*_*tor 5 c c++ multithreading
众所周知,线程作为计算模型是非确定性的.但是,在某些情况下,我们希望通过多线程并行计算来利用性能提升,同时保持执行的确定性,以便轻松满足某些一般要求,如调试或某些特定需求.我知道有可能为特定任务实现确定性多线程,但我期待一种通用且优雅的方式(也就是说,不需要大量繁琐的工程工作)来实现C/C++中的任务.解决方案的类型无关紧要:可以通过某些库,某些平台,某些通用方法或任何其他方式来实现它.
您以与可变常量相同的方式实现确定性多线程 - 您不需要.
相反,您使用各种形式的同步(包括互斥,信号量,条件变量,信号等)来确保从非确定性代码中获得确定性结果(如果需要).当然,您使用的同步越多,从代码中获得的并行性就越少; 所以你只想要最小的同步.
如何做到这一点取决于确切的算法 - 没有"银弹"是进行同步的最佳方式,适用于所有完全不同的问题.