2012-09-17 2 views
1

단일 스레드 응용 프로그램 (C++)은 공유 메모리를 연속적으로 잠 그거나, 쓰거나, 잠금을 해제합니다. 초당 네 번 (루프는 프로그래밍 방식으로 초당 1 회 실행되도록 설정되고 루프에는 4 회의 쓰기가 있고 읽기는 없습니다).공유 메모리에 쓰는 빈도는 어느 정도입니까?

EnterCriticalSection (cs);
WriteToSharedMem();
LeaveCriticalSection (cs);

또 다른 응용 프로그램 (C)은 마다 한 번씩이 공유 메모리에 액세스합니다.

이 속도로 공유 메모리에 쓰는 데 문제가 있습니까?

윈도우 XP
C++

+3

중요한 섹션이있는 프로세스 간에는 동기화 할 수 없습니다. 동일한 프로세스의 스레드간에 만 동기화 할 수 있습니다. 다른 프로세스와 동기화해야하는 경우 뮤텍스 (Mutex) (아마도 뮤텍스 (Mutex))를 사용해야합니다. –

+2

세마포어, 왜 모든 사람들이 뮤텍스를 너무 좋아합니까? – xception

답변

3

이 속도로 분명히 아닙니다! 이것은 극도로 느리지 만 중요한 부분은 사용하고자하는 것입니다. 내가 기억하는 방식은 스레드 안전성을 보장하고, 교차 애플리케이션 안전성을 보장하지 않으며, 공유 메모리를 잠 그려면 다른 것을 찾아야합니다. 공유 메모리로 원자 조작을 보장하려면 일부 Inter-Process Communication (IPC) 메커니즘을 사용해야합니다.

+0

tldp에 대한 링크가 Windows 관련 질문에 유용합니까? – kbyrd

+0

@kbyrd 메커니즘은 플랫폼에 관계없이 동일하며 MSDN의 설명보다 이해하기 쉬운 방식으로 설명됩니다. 추가적으로 모두 한 페이지에 있습니다. – xception

4

전혀. 초당 수천 (또는 수만 또는 수만)의 잠금을 가져 오거나 해제 할 수 있습니다. 당신은 쉽게 볼 수있는 빠른 벤치 마크를 할 수 있습니다.

+0

는 나는 주파수 문제의 함축 된 의미에서 나는 길이다. –

관련 문제