타이머 ( Timer ) 와 스레드 ( Thread ) 는 비슷한 모습을 보인다. 둘 다 일정한 시간 간격으로 움직이는 것처럼 보이지만 내부적으로 완전히 다르다. 타이머는 지정된 시간만큼 반복적으로 이벤트를 동작시키는 방식이라면, 스레드는 완전히 독립된 작업 프로세스 기반으로 동작시키는 방식이다. 둘 다 병렬처리가 가능하지만, 제공되는 라이브러리가 있다면 그것을 사용하는 것을 권장하고 있다.
타이머와 스레드의 차이
시간과 작업 처리 방식이 다르다
프로그램을 만들 때 간혹 선택장애가 오는 경우들이 있다.
타이머와 스레드를 선택할 때이다. 이건 또 무슨 말이냐. 둘 다 비동기적으로 현재 실행되는 프로그램과는 별개로 동작은 하는데 편한거 사용하면 되지 굳이 선택장애가 올 필요가 있을까.
이래서 어설프게 알면 머리만 아프다. 타이머와 스레드 중 하나를 선택해서 사용하라고 하면 현재 내가 잘 알고 사용하기 쉬운 것으로 코드를 만들면 된다.
기왕 사용하는거 개념을 알고 작은 코드 부분을 만들어 두면 나중에는 고민할 필요가 없을 것이다.
타이머나 스레드나 시간차이를 두고 현재 프로그램과 별개로 실행되고 동작하는 것은 동일하다.
즉, 눈으로 보는 가시적인 차이는 크게 없지만 내부적으로 동작하는 차이는 발생한다.
타이머와 스레드가 뜻
현재 실행되는 프로그램에서 별도의 작업을 실행시키고자 할 때 타이머 또는 스레드를 사용한다.
이 둘의 가시적인 차이는 같은 기능으로 보일 수 밖에 없다.
일정한 간격의 시간을 두고 반복적으로 동일한 수행을 작업하도록 하기 때문이다.
일단 프로그래밍에서 타이머와 스레드의 뜻을 찾아보자. 차이가 명확해 지는 것을 알 수 있다.
- 타이머 ( Timer )
정해진 시간 간격만큼 이벤트를 발생시켜 작업을 수행한다. - 스레드 ( Thread)
프로세스 기준의 작업 단위로 실행된 프로그램 내에서 별도의 다른 작업을 수행하도록 할 수 있다.
처리 방식의 차이
타이머 ( Timer ) 나 스레드 ( Thread ) 나 처음 배울 때 시간 단위로 학습을 했기 때문에 서로 비슷한 용도로 사용되는 것으로 보이지만 사실 이 둘의 목적은 전혀 다른 것이다.
타이머가 일정한 시간 간격으로 이벤트를 발생시켜 작업을 수행한다면, 스레드는 하나의 독립된 프로세스 단위로 작업을 수행한다. 굳이 시간간격이란 것에 구애를 받지 않아도 되는 것이다.
MSDN 의 설명을 봐도 이 둘은 명확히 다르다는 것을 볼 수 있다.
타이머 객체는 일정한 시간 간격을 명확히 설정하고 이벤트를 발생되도록 한다.
스레드 객체는 프로세스의 독립된 작업 모듈을 만들고 독립적으로 실행되도록 한다.
즉, 타이머는 시간 기반으로 실행되고, 스레드는 프로세스 작업 기반으로 실행된다.
사람으로 비유해 보자.
실행된 프로그램이 어떤 작업중인 사람이라고 하자.
이 작업중인 사람을 A 라고 했을 때 타이머 ( Timer ) 와 스레드 ( Thread ) 의 차이는 다음과 같을 것이다.
타이머는 일정한 시간간격에 따라 이벤트가 발생하고 작업을 처리한다.
스레드는 독립된 프로세스 작업을 만들어 처리한다.
작업자 A 가 타이머와 스레드를 이용해 작업한다면 아래와 같다.
- 타이머 ( Timer)
작업자 A 는 현재 하는 일 뿐만 아니라 일정한 시간 간격마다 다른 지정된 일을 할 것이다. - 스레드 ( Thread )
작업자 A 는 다른 독립된 작업자 B 를 만들고 작업자 B에게 다른 지정된 일을 하도록 할 것이다.
멀티타이머와 멀티스레드
타이머 ( Timer ) 나 스레드 ( Thread ) 나 둘 다 멀티기능을 제공한다. 이것은 병렬처리와 같다.
하나의 프로그램에서 여러가지 다른 작업을 할 수 있도록 하는 것이 병렬처리인데 멀티타이머 또는 멀티스레드로 작업을 만들 수 있다.
멀티스레드는 이미 여러 곳에서 사용이 되고 백그라운드 실행이 가능하기 때문에 상관없기에 기존의 방식대로 사용할 수 있지만 멀티타이머의 경우 제공된 라이브러리를 사용하도록 권장하고 있다. 내부적으로 처리되는 무엇인가가 있는 모양.
C# , 자바, 파이썬의 경우 단일 스레드나 타이머의 개념은 거의 비슷하다. 다만, 멀티타이머나 멀티스레드를 이용해 병렬처리를 원할 경우 제공되는 라이브러리가 있다면 그것을 사용하는 것이 오히려 수월하다.
'programming > TroubleShootInG' 카테고리의 다른 글
맥에 톰캣 다운로드와 설치하기 / macOS, Apache Tomcat 10 (0) | 2023.09.27 |
---|---|
UWP와 WPF 차이 사용되는 플랫폼의 대상이 다르다 (0) | 2023.05.08 |
공공데이터포털의 인증키와 로그인 문제 서비스키 오류는 일시적 현상 (0) | 2023.01.30 |
UX UI 뜻과 차이 사용자 중심의 기능성 디자인 (0) | 2022.12.18 |
썸머노트 위지윅 에디터 html 설정하기 (0) | 2022.12.14 |
댓글