C | C++ | VC++
시세수신과 주문을 분리
두루물
2025. 6. 18. 19:49
SendMessage vs PostMessage
대부분의 증권사(회원사)가 자체API/OPEN API를 제공(시세+주문)
하는데, PC나 폰에 설치한 APP의 일부모듈로( DLL이나 구닥다리 OCX나)
서브기능을 제공한다.MS-윈도그 기준으로는 시세수신하면 SendMessage()한다.
그래서 이곳에서 단순시세수신은 3-5초 딜레이로 내려와서 문제없지만,
주문까지 시도할경우는 병목현상으로 거래량폭발,급등락,급강하등 시세종목 한두개가
자원을 전부 독차지하고 나머지 시세는 받지도 못한다.(미국장처럼 시세딜레이같이 나중에 쳐내려옴)
시세감지해서 주문을 내려면 별도의 로직이 필요하다.그중에 가장심플한것이.아래.
아니면 이것도 부족하면 쓰레드로 16개로 돌려야한다.
SendMessage(BLOCKING)
윈도우 프로시저를 직접 호출하며,
프로시저가 메시지를 처리할 때 까지 반환하지 않는다.(TCP/BOLCKING)
순차적으로 처리(sequentially)
동기 방식(synchronous)
PostMessage(NONBLOCKING)
윈도우 커널 메시지 큐에 추가되며,각 핸들별로 윈도우 프로시저에서
꺼내가서 메시지를 처리한다.
해당 메시지가 100% 수신보장안됨(UDP).
비 순차적으로 처리(not sequentially)
비동기 방식(asynchronous)