다른 스레드에서 액세스 (읽기 및 쓰기)해야하는 std::map<int, object*>
이 있습니다. 물론, 하나의 중요 섹션을 읽기 및 쓰기 모두에 사용할 수는 있지만, 많은 수의 쓰기 (보통 초당 수천 개)와 많은 수의 쓰기 (보통 하나의 삽입 및 삭제)가 있기 때문에 성능에 큰 영향을 미칩니다. 하나는 쓰레드를 생성하고 파괴하는 동안 지움).std :: map의 thread-safe 사용
따라서 쓰기를 위해 CriticalSection
을 사용해야하고 다른 스레드가 읽기 전에 쓰기 작업을하고 있는지 확인해야합니다. 그러나 어떻게? C++ 11 및 부스트에 대한 솔루션을 찾았지만 호환성 문제로 인해 Visual Studio 2008을 사용하고 있습니다.
누군가가 나에게 그것을 수행하는 방법에 대한 예나 설명을 줄 수 있습니까? 감사!
Vista 용 Windows API에는 리더/라이터 잠금 장치가 있습니다. https://msdn.microsoft.com/en-us/library/windows/desktop/aa904937(v=vs.85).aspx –