|
주경민님의 답변 대단히 감사하겠습니다...
그런데,
세마포어나 크리티컬 섹션 을 C++ Builder에서 어떻게 구현해야 합니까?
답변 주시면 고맙겠습니다.
주경민 님이 쓰신 글 :
: 일단 몇가지 문제가 보이는군요.
: 물론 이 문제가 실제 치명적인 문제로 연결될지는 모르겠지만,
: 일단 점검해 봐야 할 것 같습니다.
:
: 1. 통신쓰레드에 너무 높은 Priority를 줬습니다.
: Priority 0이면, 메모리 할당/해제시에도 태스킹 포인트를 놓치지 않을 수 있습니다.
: 2 정도로 낮추는 것이 나으리라 봅니다.
:
: 2. 쓰레드끼리 메모리를 공유함에도 불구하고,
: Thread-safe한 코드가 작성되지 못했습니다.
: 세마포어나 크리티컬 섹션 등을 이용해서 메모리 공유시 충돌이 없어야 합니다.
:
: 3. 잦은 메모리 할당은 메모리 단편화를 유발시키며,
: 윈도우의 메모리 관리자를 혼란시킵니다.
: 또한 메모리 관리자로 하여금 잦은 메모리 정리나 스와핑을 시도하게 한다면,
: 통신 타이밍을 놓칠 수도 있습니다.
: 그러니 미리 충분한 양의 Queue를 고정적으로 할당하여,
: 실험적으로 그 크기를 조절하시거나,
: 아니면 한번에 한개 크기씩 할당하지 마시고,
: 십수개 이상씩 할당/해제 하시는 편이 좋습니다.
:
: 4. 검색, 치환이 없는 단순 Log 데이터를 남기는 것이 목적이라면,
: DB보다는 그냥 자체 포맷의 .Log 파일 등을 만드는 편이 낫습니다.
:
:
:
|