본문 바로가기

Thread

쓰레드 (Thread) 쓰레드 (Thread) 하나의 프로그램이 둘 이상의 프로세스를 생성한다면 컨텍스트 스위칭이 비번하게 일어납니다. 앞서 포스팅에서 컨텍스트 스위칭이 빈번하게 일어나면 성능저하가 일어난다고 했습니다.그렇다면 컨텍스트 스위칭이 적게 일어나면 되는데, 풀어 말하면 저장하고 복원하는 컨텍스트의 정보 개수를 줄이면 됩니다. 프로세스의 경우 완전히 독립적인 영역이기 때문에 공유를 할 수 없지만 쓰레드의 경우에는 하나의 프로그램에서 둘 이상의 흐름을 만들어 내기 위한 것이기 때문에 프로세스와 달리 공유하는 상태 정보가 있습니다. 따라서 쓰레드를 사용하는 이유에는 공유하는 요소가 잇고, 컨텍스트 스위칭에 걸리는 시간을 줄이기 위한 것입니다. 쓰레드의 특성 1. 쓰레드마다 스택을 독립적으로 할당한다. 프로세스와 마찬가지로.. 더보기
쓰레드 쓰레드 이번에는 쓰레드에 대해서 알아보도록 하겠습니다.쓰레드는 프로세스 내에서 흐름 단위를 말합니다. 한 프로그램은 하나의 쓰레드를 가지지만 둘 이상의 쓰레드도 실행 할 수 있습니다. 이러한 것을 멀티 쓰레드라고 합니다. thread.start_new_thread()를 이용해서 thread를 만듭니다.for문을 실행하면서 i 값을 make_thread()에 넘겨주죠. 소스코드를 실행해서 작성한 후에 실행을 해보면 위와 같은 출력 결과가 나오지는 않습니다.왜냐하면 CPU마다 처리하는 순서가 다른 것도 있지만 Global Interpreter Lock(GIL)이라는 것이 존재합니다. 최근에 듀얼코어, 쿼드코어를 지나 옥타코어, 데카코어 그 이상까지도 나오는 추세인데, 스마트폰 마저 옥타코어를 사용하고 있죠... 더보기