2014-05-10 3 views
0

새로운 기능 Websphere MQ V7 C++. 나는 멀티 스레드 응용 프로그램을 생성하여 대기열의 메시지에 응답하려고 생각하고 있습니다. 여러분, pthread 라이브러리를 사용하는이 멀티 스레드 접근 방식에 관한 예를 들려 줄 수 있습니까? 어떻게 하나를 만들지 전혀 모르겠다.Websphere MQ C++ 멀티 스레딩

감사합니다. :)

답변

2

개인적으로 나는 C++ API를 사용하지 않는 것이 좋습니다 - 안정화되었으며 더 새로운 기능으로 확장되지 않습니다. 대신 C++ 응용 프로그램에서 C 호출 사용

http://pic.dhe.ibm.com/infocenter/wmqv7/v7r1/index.jsp?topic=%2Fcom.ibm.mq.doc%2Fzd00030_.htm "WebSphere MQ 버전 7.0부터는 WebSphere MQ 프로그래밍 인터페이스의 향상된 기능이 C++ 클래스에 적용되지 않습니다."

멀티 스레드 방식의 관점에서 볼 때 어떤 일반 스레드 프로그램과도 다르지 않아야합니다 ... 공유 된 hconns를 사용하지 않으면 hconn은 만든 스레드에서만 유효하며 공유를 사용하는 경우 hconns 나는 스레드를 가로 질러 그것들을 동시에 공유하려고하지 않을 것이다. (콜은 보통 공유 옵션에 따라 차단 될 것이다.)

+0

응답 해 주셔서 감사합니다. 정말 감사드립니다. :) – watangka

+0

다중 스레드 MQ C API 사용과 관련하여 대기중인 MQGET을 중단 할 수있는 방법이 있습니까 (예 : 응용 프로그램을 종료 할 때)? 진행중인 MQGET이 있으면 MQDISC와 MQCLOSE가 모두 차단 된 것처럼 보입니다. – rustyx

+1

각 hconn은 어느 시점에서 하나의 API 만 진행할 수 있습니다. 그래서 당신은 몇가지 옵션을 가지고있을 것입니다. 2 개의 연결을 가지고 있고, 두 번째 깨우기에서 mqget을 위로 (거짓 메시지를 만드십시오, 대기열을 만들지 않게하십시오) MQGB에 앉아서 새로운 MQCB를 사용하십시오. 메시지를 사용할 수 있습니다. 단일 연결을 통해이 작업을 수행해야하는 경우 MQGET/wait를 고려하고 제한 시간이 초과되면 중단해야하는지 확인하고 그렇지 않은 경우 다시 대기 상태로 돌아갑니다. – JasonE

0

다른 경우에, 당신이 mesage를 얻는 프로그램을 무언가를하고 응답에있는 mesagge 두는 경우에, 다른 복잡한 논리를하십시오. P-trhead에 대한 충분한 경험이 없다면 그 프로그램을 n 번 인스턴스화 할 수 있습니다.