2010-06-28 2 views
0

COM은 멀티 코어 컴퓨터에서 COM out-of-proc 서버와 COM 클라이언트가 있고 서로 의존하는 경우 동기화 상태를 유지하는 방식을 보장합니다. 멀티 코어 아키텍처에서 실행하면 맹 글링되지 않습니다.COM 멀티 코어 컴퓨터의 멀티 스레드 아키텍처

+0

구체적으로 어떤 문제가 있습니까? – sharptooth

+0

CPU A가 COM 클라이언트의 스레드 A를 실행하고 CPU B가 COM 서버의 스레드 A를 실행하면 서로 의존하고 COM 서버가 클라이언트가 현재 작업하고있는 값을 업데이트하면 클라이언트는 잘못된 데이터로 작동합니다 . –

답변

2

COM 클라이언트가 다른 스레드에서 하나의 스레드와 COM 서버에서 실행되면 어떻게되는지 묻습니다. 이 두 스레드는 다른 프로세스에 상주합니다 (서버가 out-proc이므로).

클라이언트가 out-proc COM 서버를 사용하는 경우 COM 하위 시스템은 RPC (로컬 RPC)를 사용하여 서버와 통신합니다. 이것은 클라이언트에 대해 투명하게 수행됩니다. 클라이언트는 메소드를 호출하고, RPC는 모든 매개 변수로 문자열을 준비하고, 클라이언트 스레드를 차단하고, 서버에 호출을 전달하고, 서버는 호출을 처리하여 abd가 클라이언트에 리턴합니다. 동시 액세스가 없으므로 추가 동기화에는 문제가 없습니다. 모든 동기화는 자동으로 수행됩니다.

0

COM 서버가 out-of-proc이므로 클라이언트와 서버의 스레드가 별도의 프로세스로 실행됩니다. Windows의 프로세스 간 동기화 메커니즘은 코어 또는 프로세서에서 작동하므로 COM 하위 시스템은 이미 모든 멀티 코어/프로세서 문제를 처리합니다.

클라이언트가 알지 못하면 서버 끝에서 변경 될 수있는 데이터가있는 경우 단일 CPU/코어에도 문제가 있습니다. 폴링 (불량) 또는 클라이언트 알림 인터페이스).

관련 문제