상세 컨텐츠

본문 제목

C/C++ multi Thread

개발생활/C C++

by 한국인맛집 2017. 10. 17. 00:41

본문

반응형

THREAD

 : 독립적으로 관리할수 있는 프로그램 명령들의 작은 시퀀스인 스케쥴러의 부분이다. 즉 운영체제의 스케쥴러 내부에서 하나의 순서 를 말한다.

 스레드 와 프로세스의 구현은 운영체제마다 다르다.


C/C++ 에서 Thread 를 사용하기위해선 헤더파일을 추가하여야한다.



위 예제에서 Thread 생성 시 bind 함수를 사용하여야한다.



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++' 카테고리의 다른 글

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

관련글 더보기