다중 스레드에서 단일 정수 유형 (예 : long, int, bool, etc ...)에 액세스하는 경우에는 다음과 같은 동기화 메커니즘을 사용해야합니까? 그들을 잠그기위한 뮤텍스. 내 이해는 원자 유형으로, 내가 하나의 스레드에 대한 액세스를 잠글 필요가 없다지만, 거기에 잠금을 사용하는 많은 코드를 참조하십시오. 이러한 코드를 프로파일 링하면 잠금을 사용하면 성능이 크게 저하된다는 것을 알 수 있습니다. 그래서 내가 액세스하는 항목이 32 비트 프로세서에서 4 바이트와 같은 정수의 버스 너비에 해당하는 경우 여러 스레드에서 사용될 때 액세스 권한을 잠글 필요가 있습니까? 다시 말하면, 쓰레드 A가 쓰레드 B가 같은 변수로부터 읽는 동안 정수 변수 X에 쓰는 중이라면, 쓰레드 B가 몇 바이트의 이전 값을 섞어서 끝낼 수있는가? 가치는 쓰여졌습니까? 이 아키텍처는 예를 들어 32 비트 시스템에서는 4 바이트 정수를 사용할 수 있지만 64 비트 시스템에서는 8 바이트 정수에서는 안전하지 않습니까?C++ 스레드에서 정수로 잠금을 사용해야합니까?
편집 : 그냥 보았습니다. related post 이는 공정한 도움이됩니다.
감사합니다. InterlockedExchange는 아마도 내가 찾고있는 함수 일 것입니다. 문제의 변수에 실제로 쓰는 스레드는 한 스레드 뿐이며 단순히 읽는 스레드 일뿐입니다. –