2014-11-14 2 views
-1

Soft MetaTrader 5. 거래 단말기입니다. 그것은 "지표"창문은 거의 cpp 같은 프로그램이 아닙니다. 그들은 순수한 cpp DLL을로드 할 수 있습니다. 모든 "지표"는 별도의 스레드에서 작동합니다. 모든 "표시기"에서 액세스 할 수있는 공유 메모리를 만들어야합니다. 또한 모든 지시기에 공유 메모리가로드 될 수 있으므로 특히 dll에 있어야합니다.cpp dll의 공유 메모리 항목

boost interprocesses에 대한 정보를 찾았습니다.

나는 boost와 multithreading으로 newbee이다. 그래서 나는 옳은 길일까?

  1. 표시기에서 액세스하려면 공유 메모리 기능과 인터페이스가있는 dll을 만듭니다.
  2. dll을 여러 "표시기"에로드하십시오.
  3. 실시간으로 여러 "표시기"에서 액세스 하시겠습니까?

다른 방법으로 조언 해 줄 수 있습니까?

답변

0

공유 라이브러리의 전역 변수는 라이브러리 사용자 프로세스에서 공유되지 않습니다. 데이터 세그먼트는 라이브러리를로드하는 모든 프로세스에 대해 작성되며 읽기 전용 코드 세그먼트 만 실제로 공유됩니다.

boost::interprocess shared_memory_object 또는 POSIX Shared Memory 또는 Qt의 QSharedMemory과 같은 공유 메모리 용 라이브러리를 사용해야합니다. 그러나 이는 프로세스 간 의사 소통이 필요한 경우에 유용합니다.

뮤텍스를 사용하여 데이터 경합을 방지하는 것 외에 다중 스레드가 동일한 프로세스에서 공유 메모리에 액세스하기 위해 수행해야 할 특별한 작업은 없습니다.

관련 문제