우선 타이머를 두개 만들어서 일을 시키는 건 불안(?)할 수도 있다는 것을 말씀드리는 거구요.
그래서 쓰레드를 만들고 시간 동기 시그널만 타이머에서 주는 식으로 많이들 쓴다고 말씀드린 겁니다.
엄격히 말해 쓰레드를 두개 만든다고 해서 일이 동시에 되지는 않는 거고 많은 고려가 추가로 되어야 합니다.
댓글을 보니 아직 쓰레드에 경험이 많이 없는 것 같아 노파심으로 말씀드리는 겁니다.
추가로 타이머 이벤트에서 많은 일을 시키면 안됩니다. signal 또는 semaphore, 또는 mail box 등 타스크 싱크로 API 에 대해서 한번 보세요.
김수정 님이 쓰신 글 :
: 제가 궁금한건 그게 아닌것 같은데요.
: 쓰레드를 두개 만들어 원하는 작업을 동시에 하는데요.
: 타이머를 두개 만들어 각각의 타이머enable이벤트에서 원하는 작업을 해도 동시에 처리되지 않는지에 대한거거든요.
: 하여간 관심가져주셔서 감사합니다.
:
:
: 라스코니 님이 쓰신 글 :
: : 일단 저는 델파이는 전 ~ 혀 모릅니다만,
: :
: : 쓰레드와 타이머는 뗄수 없는 밀접한 관계죠.
: : 정확하게 쓰레드가 일하는 신호(signal)를 타이머가 주는 경우가 많습니다.
: : 일명 periodic thread/task 라고 하죠.
: : 쓰레드에서는 세마포로 타이머의 signal을 기다리고,
: :
: : 김수정님이 예를 든 경우보다는 쓰레드를 만들고 타이머를 추가로 만들어, 타이머에서 주기적인 파일 처리하라는 시그널(세마포)을 만들어 쓰레들에 주기적으로 던져주어 실제 파일 처리는 쓰레드에서 하는 것이 stable 한 방법입니다.
: :
: :
: : 김수정 님이 쓰신 글 :
: : : 회사에서 큰소리쳐 놓고 대책이 없어 고민하다가 civilian님과 조대현님의 도움으로 문제가 해결되어 깊은 감사를 드립니다.
: : :
: : : 자꾸 질문만 하게 되는데요.
: : :
: : : 여러 피시에 파일전송을 하는 부분을 쓰레드로 처리했는데요.
: : : 갑자기 이걸 타이머로 처리하면 어떨까 하는 생각을 하게 되었습니다.
: : : 사실 civilian님께서 올려주신 소스를 수정해서 간신히 만들긴 했지만
: : : 짜집기 하는 실력이라 제가 해 놓고도 어렵기는 마찬가지거든요.
: : : 그래서 타이머를 이용하는것이 더 쉽고 나중에 프로그램을 수정하더라도 이해하기가 쉬울것 같아서요.
: : :
: : : 예를들어
: : : Timer1.enabled=true;
: : : Timer2.enabled=true;
: : : 이렇게 해놓고
: : :
: : : TForm1.Timer1Timer(Sender: TObject);
: : : Begin
: : : Timer1.enabled = False;
: : : 처리할 내용
: : : End
: : :
: : :
: : : TForm1.Timer2Timer(Sender: TObject);
: : : Begin
: : : Timer2.enabled = False;
: : : 처리할 내용
: : : End
: : :
: : : 이렇게 해도 쓰레드와 같은 효과가 있지 않을까요?
: : : 혹시 이렇게 하면 TForm1.Timer1Timer이벤트가 끝난 다음 TForm1.Timer2Timer이벤트가 실행되나요?
: : :
: : : 고수님들 조언 부탁드립니다.
: : :
: : : 그동안 귀찮은 질문에도 마다하지 않고 도움을 주신 civilian님과 조대현님께 다시한 번 감사드립니다.
|