Я начал использовать некоторые базовые потоки в c ++ 0x, чтобы ускорить процесс.Для тривиального примера, который ничего не делает, кроме тестовой скорости:
void my_thread_func(int n, int steps, int offset)
{
double a[n];
for (int i=0; i<n; i++)
a[i] = i + offset;
for (int step=0; step<steps; step++)
for (int i=0; i<n; i++)
a[i] = sin(a[i]);
}
int main()
{
std::vector<std::thread> t;
for (int i=0; i<numRuns; i++)
t.push_back(std::thread(my_thread_func, n, steps, i));
for (int i=0; i<numRuns; i++)
t[i].join();
}
, и это работает довольно хорошо.Мой вопрос несколько общий, а именно, как обобщить приведенную выше идею для работы с функциями-членами.Скажем, у меня есть 10 веревок, и каждая веревка имеет несколько (однопоточных) функций-членов, computeTorques (), computeForces () и т. Д. Предполагая, что веревки не разделяют память / ресурсы, есть ли способМожет ли многопоточность вызывать каждую функцию-член каждой веревки без явного изменения (однопоточного) кода внутри веревки?