|
단일 쓰레드를 쓴다고 하셨는데, 별도의 쓰레드는 하나도 만들지 않고 디폴트 쓰레드만 동작한다는 말씀이신가요?
쓰레드를 언급하신 걸로 봐서는 그런 상황에서는 서브 쓰레드가 필요하다는 걸 아실 거 같은데...
말씀하신 내용이 앞뒤가 안맞는 거 같아서 상황이 좀 이해가 안되네요.
Sleep() 함수를 쓰면 호출한 쓰레드가 블로킹되어 그 시간 동안 먹통이 됩니다.
만약 디폴트 쓰레드에서 Sleep()을 호출하면 UI가 멈춰버릴 거구요.
만약 단일 쓰레드라는 말이 표현의 실수고, 서브 쓰레드를 만들었는데 UI가 버벅인다는 말씀이라면 얘기가 다른데..
다시 상황을 좀 자세히 알려주시면 다시 답변을 드리겠습니다.
그럼...
차요한 님이 쓰신 글 :
: 맨날 와서 조용히 배우기만 하다가 이렇게 질문 한번 해봅니다. ^^
: 질문 내용은 사실 초보적인 내용 같은데요
: (사실 C빌더는 처음 써봅니다. ^^;;; 물론 프로그래밍 수준도 초보구요 ㅜㅜ;;;)
:
: 현재 클라이언트 프로그램을 수정하고 있습니다. 프로그램 동작 내용은 아래와 같은데요
:
: 서버로 일정시간(약2분)마다 1.8 킬로바이트 정도의 데이터가 내려옵니다.
: 데이터는 번호가 정해져 있어서 순서대로 내려옵니다.
: 그러면 클라이언트는 내려받은 데이터를 순번에 맞게 하나에 파일에 저장하고
: 그 파일을 근거로 사용자에게 화면을 통해 보여주고 순서대로 시리얼통신으로 연결된
: 디바이스에 데이터를 하나씩 순서대로 전달해서 작업을 시킵니다.
:
: 프로그램은 단일 스레드로 구성되어 타이머 컴포넌트로 각 작업을 조율하고 있는데요
: 여기서 문제점은 서버로 부터 일정시간 내려오는 데이터가 통신 장애라던지
: 기타 문제로 일정 시간동안 데이터를 받지 못하게 될 경우가 있습니다.
: 이때 다시 통신재개가 되어 서버부터 데이터를 받게되면 그 동안 받지 못했던 데이터들이
: 우르르 내려 오게 되면서 사용자 UI와 작업이 버벅거리게 된다고 할까 거의 멈추어
: 버린듯이 되어 버립니다.
:
: 제 생각에는 서버로부터 데이터를 받고 나서 OK 메세지를 보내는데 이때 이 메세지를
: 바로 보내지 않고 Sleep 을 주면 어떨까 하는데 (사실 Sleep 을 주면 UI 라던지 다른작업이
: 원활히 도는지 잘 모르겠습니다. ) C빌더 잘 쓰시는 분에 답변 부탁드립니다.
:
: 제가 질문을 잘 이해하게끔 올렸는지 모르겠네요 더 자세한 사항 궁금하시면 더 자세하게
: 설명 드릴께요 제 생각 같아선 새로 다시 프로그램을 개발했으면 하지만 ^^;;;
: 워낙 많은 사람들에 손을 거쳐간 소스라 유지 보수의 어려움이 큽니다. ㅜㅜ;;;
|