문제

두 개의 Windows 프로세스에는 메모리가 동일한 공유 파일을 매핑했습니다. 파일이 카운터로 구성된 경우 Interlocked* 기능 (같은 InterlockedIncrement) 해당 카운터를 업데이트하려면? 이들은 프로세스에서 액세스를 동기화합니까? 아니면 뮤텍스처럼 무거운 것을 사용해야합니까? 또는 아마도 공유 메모리 메커니즘 자체는 일관된 견해를 보장합니다.

도움이 되었습니까?

해결책

에서 MSDN:

...

연동 API

인터 로크 함수는 여러 스레드에서 공유하는 변수에 대한 액세스를 동기화하기위한 간단한 메커니즘을 제공합니다. 또한 원자 방식으로 변수에 대한 작업을 수행합니다. 변수가 공유 메모리에있는 경우 다른 프로세스의 스레드는 이러한 기능을 사용할 수 있습니다.

그렇습니다. 공유 메모리 접근 방식으로 안전합니다.

다른 팁

인터 로크 함수는 정확히 해당 유형의 사용을위한 것입니다.

에서 http://msdn.microsoft.com/en-us/library/ms684122.aspx:

변수가 공유 메모리에있는 경우 다른 프로세스의 스레드는 이러한 기능을 사용할 수 있습니다.

물론 원자 적으로 둘 이상의 항목을 업데이트 해야하는 경우 프로세스에서 작동하는 Mutex 또는 다른 동기화 객체와 함께 가야합니다. 공유 메모리 메커니즘에는 공유 메모리에 액세스 할 수있는 동기화를 제공하기위한 공유 메모리 메커니즘에 내장 된 것이 없습니다. 인터록 된 함수 또는 동기화 객체를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top