공유 자원이 필요한 동기화를 제공해야합니다. 그 이유는 동기화가 필요하지 않을 수 있으며 일반적으로 다소 비싼 작업 성능입니다.
예를 들어 공유 메모리에 32 비트 정수 형식의 현재 통계와 이러한 값을 읽는 몇 가지 프로세스를 작성하는 프로세스가 있다고 가정 해보십시오. 값은 정수이므로 (플랫폼에 따라서는 읽기와 쓰기가 원 자성이므로) 하나의 프로세스에서 이들을 작성하고 몇 개의 프로세스에서이를 읽으므로이 설계에는 동기화가 필요하지 않습니다.
그러나 위 예제에 여러 작성자가 있거나 또는 정수 대신 문자열 데이터를 사용하는 경우와 같이 일부 예에서는 동기화가 필요합니다. 이 다양한 내부 부스트의 동기화 메커니즘이다 (물론 비 부스트 것들,하지만 이미 사용 부스트 때문에), 여기에 설명 : http://www.boost.org/doc/libs/1_48_0/doc/html/interprocess/synchronization_mechanisms.html
[정보 부스트 :
이
[1.48 안정 버전에 대한 정보를 부스트] 버전에 대한 귀하의 사용 : 공유 메모리와 1.40] http://www.boost.org/doc/libs/1_40_0/doc/html/interprocess/synchronization_mechanisms.html
을 익명으로 할 수있는 공유 메모리 세그먼트의 기지에서 동기화 메커니즘을 배치하는 일반적인 방법입니다 (OS 커널이에 대한 액세스를 제공하지 않습니다 의미 그것은 이름으로). 이 방법은 모든 프로세스가 공유 메모리 세그먼트를 잠그는 방법을 알고 있고, 세그먼트와 잠금을 연결할 수 있습니다 (예를 들어 여러 개가있는 경우)
뮤텍스에는 프로세스 내에서 동일한 실행 스레드가 필요합니다. 그것을 잠근다. 서로 다른 실행 스레드에서 동기화 객체를 잠그고 잠금 해제해야하는 경우 세마포가 필요합니다.
뮤텍스를 프로세스 간 뮤텍스 (http://www.boost.org/doc/libs/1_48_0/doc/html/boost/interprocess/interprocess_mutex.html)로 사용하도록 선택하는 경우, 부스트 스레드 라이브러리의 뮤텍스는 여러 스레드가있는 단일 프로세스 용입니다.
http://www.boost.org/doc/libs/1_40_0/doc/html/interprocess/synchronization_mechanisms.html을 읽으셨습니까? –