2010-04-23 6 views
0

VC++ (Microsoft Visual Studio 2005)에서 boost :: interprocess :: message_queue를 사용하고 있습니다. 디버그 모드에서 올바르게 작동합니다. 그런 다음 릴리스 모드에서 프로그램을 컴파일하면 작동을 멈추고 "try_send"를 호출 할 때마다 false를 반환합니다. 릴리스와 디버그 모드간에 다른 설정이 무엇인지 이해할 수 없으며 대기열이 작동하지 않게됩니다.boost :: interprocess :: message_queue가 Visual C++로 릴리스 모드에서 작동하지 않습니다.

+1

컴파일러에 대한 업데이트를 찾아 보거나 최신 버전으로 바꾸십시오. – bitc

+0

Visual Studio에서 사용하는 컴파일러를 변경할 수 있습니까? 옵션을 살펴 봤지만 찾지 못했습니다. – Arthur

답변

0

내 릴리스 버전은 디버그 것과 같이 많은 로깅을 수행하지 않습니다. 대기열에 메시지를 누적하는 스레드가 빠르다는 것은 다른 스레드 (메시지를 비우는)가 따라 가지 않는다는 것을 의미합니다. 메시지 큐가 가득 찼 으면 끝납니다. timed_send를 사용하여 다른 스레드가 따라 잡을 시간이 필요합니다.