라스코니님 하신 말씀이 이제야 이해가 됩니다.
자칫 괜한 짓을 할뻔 했네요.^^
감사합니다.
라스코니 님이 쓰신 글 :
: 우선 타이머를 두개 만들어서 일을 시키는 건 불안(?)할 수도 있다는 것을 말씀드리는 거구요.
: 그래서 쓰레드를 만들고 시간 동기 시그널만 타이머에서 주는 식으로 많이들 쓴다고 말씀드린 겁니다.
:
: 엄격히 말해 쓰레드를 두개 만든다고 해서 일이 동시에 되지는 않는 거고 많은 고려가 추가로 되어야 합니다.
: 댓글을 보니 아직 쓰레드에 경험이 많이 없는 것 같아 노파심으로 말씀드리는 겁니다.
:
: 추가로 타이머 이벤트에서 많은 일을 시키면 안됩니다. 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님과 조대현님께 다시한 번 감사드립니다.
|