2017-11-28 6 views
1

은 아이겐 라이브러리, A 말을 내가 즉, 여러 스레드에서의 열을 채우려는 스레드가 A.col(j) = xj를 호출합니다. 각 열 j은 정확히 한 번 쓰고 하나의 스레드 만 쓰게됩니다. 따라서 두 개의 스레드가 같은 열에 쓰지는 않지만 두 개의 다른 열을 동시에 쓸 수는 없습니다. 고유 라이브러리 : 여러 열에 동시에 쓰기가 안전합니까? 내가 매트릭스를

나는 스레드 환경에서 아이겐를 사용하기 전에 호출해야 Eigen::initParallel() 말을 멀티 스레드 코드에 대한 아이겐의 문서에 짧은 단락을 발견했다. 그러나 위와 같이 시나리오에서 Eigen을 사용하는 것에 대한 설명은 작성하지 않습니다.

위에서 설명한 방법으로 사용하는 아이겐은 안전합니까? 미리 감사드립니다. 두 개의 스레드가 지금 같은 메모리 위치에 쓸 수 없기 때문에

+1

[관련 (https://stackoverflow.com/questions/42304510/thread-safe-writing-to-eigenmatrixxd-by-row/42326595#42326595) –

답변

1

은 당신이 설명하는 방법에 관계없이 아이겐 여부를 사용, 안전이있다 (즉, 배열의 열.) 두 개의 스레드가 액세스하지 않기 때문에 더 경쟁 조건이 없습니다 당신이 말한 것처럼 그것을 구현한다면 같은 메모리 위치. 동일한 메모리 위치에 쓰려고 시도하면 스레드로부터 안전하지 않습니다.

하나의 스레드는 스레드 안전성에 대해 걱정하지 않고 여러 번 할당 된 열을 읽거나 쓸 수 있습니다. 동일한 열의 다른 행도 마음에 들어야합니다. 그러나 다른 곳에서는 아무 것도 그 열에 액세스하지 않는 한 시각.

나는 그것이 가장 좋은 방법의 여부, 또는 스마트 포인터 또는하지를 사용하는 것이 좋습니다 있는지 확실하지 않습니다. 어느 쪽이든, 당신이 설명하는 프로세스는 스레드로부터 안전합니다.