我试图找出最基本的线程for循环的方法。例如,如果我有以下循环:在C++中为循环创建螺纹
for(int i = 0; i < n; i++)
doSomethingThreadSafe(i);
这将在Windows平台上。我已经为每个处理器创建了一个线程,然后试图尽可能均匀地为每个处理器分配n个线程。然后我将必要的数据传递给每个线程,然后使用WaitForMultipleThreads。有一个更好的方法吗?我不想使用任何其他库如boost。
理想情况下,我想要一些通用的(也许是模板的)方式去做这件事。即
threaded_for(0, n, doSomethingThreadSafe);
如果最佳/最有效的方法是要使用一个库,有多少工作将需要添加库,以及如何准确地将它在这个例子中使用。不过,我更喜欢一种无需添加其他东西的解决方案。
由于您不想使用外部库,您将无法使用[OpenMP](http://www.openmp.org/),这实际上就是您应该在这种情况下使用的。 – chrisaycock
你在线程中实际做了什么?会不会有需要同步的共享资源? – ThomasMcLeod
@ThomasMcLeod所有的东西都已经安装完毕,所以不需要同步。他们都会独立做事。 –