DB 멀티쓰레드 프로그램 질문입니다...
글쓴이: 익명 사용자 / 작성시간: 일, 2018/11/04 - 12:29오전
안녕하세요 DB에 대해서 공부하면서 코딩하고 있는데 (MySQL 사용중)
일정 개수의 쓰레드를 미리 생성하고 Main과 작업큐, 리턴큐를 두개 공유하게 한다음
Insert, delete, update, select 문중 선택해 데이터를 입력한 뒤 작업큐에 push 하고 push했다는 이벤트를 발생시키면 쓰레드들의 Sleep이 풀리면서 작업큐에서 pop을 해 연결된 DB에게 쿼리를 쏴주고 리턴받아 큐에 다시 넣어줍니다 그리고 Main은 리턴큐를 검사해 결과를 출력하는 프로그램인데요
문제가
DB의 데이터는 정수가 될 수 있고 문자열이 될 수도 있으니 버퍼에 문자열로 파싱해 주고받게 했었는데
int 4바이트에 비해 문자열은 너무 크니 메모리손해가 발생한다고 생각하는데 어떻게하면
문자열이 아닌 자료형을 문자열과같이 구조체가 아닌 형태로 전달할 수 있을까요?
또, Main이 리턴큐를 검사하는동안 쓰레드들은 완료된 작업을 push하지 못하는데 단순히 Main이 또다른 큐를 가지는 방법 말고 다른 방법이 있을까요?
Forums:
...
> int 4바이트에 비해 문자열은 너무 크니 메모리손해가 발생한다고 생각하는데
그렇게 생각하신 이유는 뭔가요?
좀 더 구체적으로 말하자면, 작업큐/리턴큐에 쌓일 수 있는 정수의 갯수는 최대 몇 개쯤을 예상하고 계십니까? 100개? 백만개? 10억개?
(발생하는 이벤트의 총 갯수가 아니라 큐에 쌓여서 처리를 기다리고 있는 데이터의 양을 말하는 겁니다.)
그 숫자가 어느 수준이냐에 따라 "정수를 문자열로 저장하는" 것이 프로그램이 돌아가느냐 뻗느냐를 결정하는 핵심 요소가 될 수도 있고, 아무 효과도 없는 데 괜히 프로그램만 복잡하게 만들어 버그를 양산하는 삽질이 될 수도 있습니다.
댓글 달기