해결된 질문
작성
·
296
0
안녕하세요. 배운 내용을 한번 확인 및 함수호출과 쓰레드의 관계에 대해서 질문 드립니다!
main함수에서 다른 함수를 호출할 때는 쓰레드가 생성되는게 아니고 하나의 main 쓰레드가 끝날때까지 진행 되는건가요?
그리고 그 실행된 메인 쓰레드는 호출 된 함수로 이동하여 계산 또는 값을 수정 등을 하고 다시 반환하여 메인 함수로 가는 건가요?
만약 동시에(싱글코어로 가정하면) 이러한 실행을 하기 위해서는 쓰레드를 추가하는 것이라고 이해하면 될까요?
싱글코어로 가정한 쓰레드들은 OS가 동기화를 통해 쓰레드들간에 진행을 통제 하는건가요?
답변 1
1
함수가 함수를 호출한다 해서 스레드가 생성되는 것이 아닙니다. 자격을 갖춘 특정 함수를 스레드로 실행해야 새 스레드가 생성됩니다. 가령 main() 함수가 printf() 함수를 호출하고 반환하기를 기다린다면 이 흐름은 한 스레드 내부에서 하나의 흐름으로 이어지는 것입니다. 즉, 단일 스레드 환경이라 하겠습니다.
끝으로 '실행된 메인 스레드는 호출 된 함수로 이동'이라는 말의 의미가 불분명 합니다. 제어의 흐름이 피호출 함수로 이동하는 것을 말하는 것으로 추정해볼 수 있겠는데 이러한 제어의 흐름 이동은 스레딩과는 무관합니다. 참고하시기 바랍니다. :)
감사합니다! 제법 꽤 긴 시간 동안 맞나 틀리나 고민했는데 이 개념에 많이 깨끗해졌습니다. 언제나 좋은 강의 감사드립니다 도움 많이 됩니다!!
C나 Cpp쪽은 아니지만 Hw 프로그래밍언어인 verilog랑 systemverilog을 다루면서 이러한 C언어쪽 개념도 익히고 운영체제랑 , OS 그리고 네트워크도 알아야 해서 참 배울게 많아 걱정인데 언제나 좋은 강의 감사드립니다 :)