저는 C++ 0x에서 몇 가지 기본 스레딩을 사용하여 작업 속도를 향상 시켰습니다. 시험 속도를 제외하고는 아무 것도하지 않는 간단한 예제의 경우 :객체 지향 C++ 멀티 스레딩
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() 등 여러 멤버 함수가 있습니다. 로프가 메모리/리소스를 공유하지 않는다고 가정하면 각 로프의 각 멤버 함수를 멀티 스레드로 호출 할 수 있습니다 (명시 적으로 로프 내에서 (단일 스레드) 코드를 변경하지 않아도됩니까?
이것은 개체 구현에 따라 다릅니다. –