THREAD
: 독립적으로 관리할수 있는 프로그램 명령들의 작은 시퀀스인 스케쥴러의 부분이다. 즉 운영체제의 스케쥴러 내부에서 하나의 순서 를 말한다.
스레드 와 프로세스의 구현은 운영체제마다 다르다.
C/C++ 에서 Thread 를 사용하기위해선 헤더파일을 추가하여야한다.
Prototype 는 std::thread(std::function<void()>) void 형태 function 형태이다.
그리고
함수의 파라미터를 bind 함수내부에 넣는 방법 : std::bind(function_name , parameters);
최대 4개 까지 가능하다.
join() 함수는 쓰레드가 종료가 될때 까지 기다린다.
Thread 를 사용하기 위해선 join() 을 호출해줘야한다.
호출하지 않을시 Run time Error 를 발생시킨다.
왜 Run time Error 를 발생할까?
그것은 현재 예제에서 Thread 는 stack allocated 되어있다.
그말은 즉 main함수가 끝나면 모든함수가 끝나는데 쓰레드는 남아 있기때문에 Run time Error를 발생하기때문이다.
그러므로 join() 함수를 꼭 사용하도록하자.
그럼 의문이 든다. Heap 에 올려놓을땐 어떻게 해야할까
그건 detach() 를 사용하면 된다. 하지만 하지않는게 좋다.
detach() 는 메인쓰레드로부터 분리시키는 역할을 하며 heap 영역에 올려놓고 싶을때 사용한다.
detach()를 이용해 쓰레드 관리를 잘하면 좋겠지만 초보 프로그래머는 비추천한다. 메모리 관리를 못할경우 악성코드로 나타나 비정상적인 행동을 유발할수있기 때문.
C/C++ Operators (0) | 2021.03.13 |
---|---|
C/C++ Variables And Types (0) | 2021.03.13 |
IDE Tool 설치. (Visual Studio 2019 install) (0) | 2021.03.01 |
static used in class C++ (31) | 2017.09.05 |
Cmd command (0) | 2017.08.22 |
Template / Single LinkedList 구현 과정. (124) | 2017.06.07 |