여기에 조언이 필요합니다. STL 컨테이너의 작업 중 읽기 전용으로 간주되는 작업은 무엇입니까? 예를 들어, vector<int>
을 취하면 기본 int 데이터를 변경하지 않는 연산은 읽기 전용입니까? 다중 스레드 프로그램을 작성 중이지만, 참조/포인터로 컨테이너를 전달하기에 스레드 안전성이 있는지는 확실하지 않습니다.STL 컨테이너의 읽기 전용 작업
사이에 동일한 규칙이 basic_string에도 적용됩니까? STL 컨테이너의 내부 메커니즘에 대한 이해를 빠르게 얻는 데 도움이되는 권장 리소스는 무엇입니까? 감사.
그 이유는 어떤 작업이 비 threadsafe인지 알아 내려고합니다. STL은 threadsafe가되도록 설계되지 않았지만 모든 컨테이너 작업에 멀티 스레드 문제가있는 것은 아니며 일부는 잠금/동기화가 필요하지 않을 수도 있습니다. 또는 공유 컨테이너의 모든 작업 (예 : 실적 고려 사항)에 동기화를 적용하는 것이 실용적입니까? – shiouming
문제는 쓰레드가 안전한지 아닌지를 알 수 없다는 것입니다. 왜냐하면 표준에서는 그것을 언급하지 않기 때문입니다. 그러므로 가장 좋은 방법은 항상 어떤 형태의 동기화를 사용하는 것입니다. 스레드 안전 컨테이너를 지원하는 라이브러리를 찾을 수도 있습니다. 인텔 TBB는 오픈 소스입니다. – lkristjansen
또는 구현 문서를 확인하십시오. 표준은 스레드 안전을 지정하지 않습니다. 명시 적으로 구현이이를 명시 할 수있는 가능성을 열어줍니다. thread-safe C++ 구현을 사용하는 것은 인텔 TBB로 마이그레이션하는 것이 훨씬 더 작은 단계입니다. – MSalters