0

구체적인 질문은 아니지만 더 많은 것을 테스트하려고합니다. 나는 분산 된 물건을 좋아하고, 나는 중부 파견을 좋아한다. 나는 둘을 합치 는게 어때?분산 객체 + 그랜드 센트럴 디스패치

의미가 있습니까? 아무도이 물에서 놀았습니까? GCD를 사용하여 컴퓨터간에 개체 액세스를 동기화 할 수 있습니까? 아니면 로컬 객체 만 동기화하는 것이 좋을까요? 나는 무엇을주의해야합니까? 어떤 디자인 패턴이 도움이되고 왜 피해야합니까?

예를 들어 GCD 대기열을 사용하여 어떤 종류의 공유 ​​리소스에 대한 액세스를 동기화합니다. 이 리소스를 분산 객체를 통해 공용으로 만들면 어떻게 될까요? 질문은 다음과 같습니다. 블록이 분산 객체와 얼마나 잘 작동합니까? 컴퓨터에서 모든 것을 정상적으로 사용할 수 있습니까? 그렇지 않다면 그렇게 할 수 있을까요? 어떤 어려움이있을 수 있습니까?

+0

광범위하고 애매하게 대답합니다. 달성하고자하는 것이 무엇입니까? –

+0

설명이 도움이 되었습니까? – dented42

답변

2

나는 이것이 잘 작동하는지 의심 스럽다. GCD 개체는 Cocoa 개체가 아니므로 원격으로 참조 할 수 없습니다. GCD 동기화 프리미티브는 프로세스 경계에서 작동하지 않습니다.

블록은 객체이지만 블록은 NSCoding을 지원하지 않으므로 프로세스 경계를 ​​넘어 전송할 수 없습니다. (생각하면 함수 포인터 이상은 아니며 지적 된 함수는 실행 파일에 컴파일되어야하므로 두 개의 다른 프로그램이 하나의 블록을 공유한다는 의미는 아닙니다.)

또한 분산 객체는 주어진 실행 루프에서 예약 된 연결에 의존합니다. GCD에서 사용하는 스레드를 관리하지 않으므로 일시적으로 실행 루프 소스를 추가 할 권한이 없습니다.

솔직하게 말해서 이론적으로 어떻게 작동하는지조차 알지 못합니다. 너는 무엇을하기를 희망 하는가? 어떻게 작동 할 것으로 예상합니까?

+0

저는 실제로 특정 목적을 염두에 두지 않았습니다. GCD를 사용하여 공유 리소스를 조정하는 데 익숙해지기 시작했습니다. 분산 객체에 적용 할 수 있는지 궁금해하고 있습니다. 그렇다면 권장되는 방법은 무엇입니까? 그런 종류의 일을하기 위해서? – dented42

+0

비록 동일한 이진 파일의 인스턴스 만 서로 연결을 시도한다는 제한을 추가하면 함수 포인터를 전달하지 않겠습니까? – dented42

+0

아니요. 각 프로세스마다 자체 주소 공간이 있으며 사물은 각각 동일한 주소에 있지 않습니다. –

0

LAN, MAN 또는 WAN처럼 여러 컴퓨터에서 실행 중입니까?

LAN에서는 연결하려는 서버가 작동하는 한 분산 된 개체가 제대로 작동합니다. 그러나 당신이 만나는 대부분의 프로그래머들은 눈썹을 치고 아마 "왜 당신은 단지 LAN상의 웹 서버를 사용하지 않고 왜 Distributed Objects와 같은 느낌을주는 래퍼 클래스를 만들지 않았을까요?"라고 묻습니다. 제 말은 웹 서버 문제를 해결할 수있는 도구가 잘 갖추어져 있으며, 분산 된 객체 서버가 아닌 웹 서비스를 구축하는 사람을 고용하는 것이 더 쉽고 저렴하다는 것입니다.

그러나 MAN 또는 WAN에서는 대부분의 경우 느리고 아주 나쁜 생각입니다. 이러한 유형의 통신에서는 HTTPS/HTTP가있는 REST와 유사한 API를 사용하여 XML, JSON 또는 키/값 데이터를주고받는 것이 좋습니다. 그래서 여러분은 이것을 분산 객체와 같은 "느낌"을 갖게하는 클래스 래퍼를 만들 수 있습니다. 그리고 내 직감은 클라이언트에서 로컬 데이터 청크를 캐싱하거나 서버에서 페치를 유지할 필요가 없도록하거나 서버에 캐싱을 할 필요가 없도록하기 위해 속임수를 사용해야한다는 것을 알려줍니다 데이터베이스와 자주 상호 작용할 필요가 없다는 것입니다.

GCD, 분산 객체, 마하 포트, XPC, POSIX 메시지 대기열, 명명 된 파이프, 공유 메모리 및 기타 여러 IPC 메커니즘은 실제로 동일한 컴퓨터에서 로컬 응용 프로그램 통신에 가장 적합합니다. 그리고 당신이 그것을 활용하고 싶다면 특권 승격의 추가 이점을 갖습니다. (참고로 POSIX 메시지 대기열은 워크 스테이션에 따라 다르지만 LAN, MAN 또는 WAN에서도 '메시지 대기열 서비스'를 사용할 수 있습니다.) 많은 제품을 사용할 수 있습니다.

관련 문제