인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Interlocked

쓰레드의 작업 순서가 너무 헷갈립니다.

작성

·

114

·

수정됨

0

안녕하세요. 강의 잘 보고 있습니다. 질문 드립니다.

t1, t2 두 개의 쓰레드를 만들고 실행시켰습니다.

t1.Start();

t2.Start();

 

Start()라는 함수가 쓰레드 클래스 말고 싱글 쓰레드 개발환경에서의 그냥 아무 함수라고 가정한다면,

t1.Start()가 먼저 실행되고

Start함수가 끝날때 까지 기다린 후

t2.Start()가 먼저 실행되는게 '문법적으로' 맞잖아요??

 

하지만 쓰레드 클래스의 경우에는

t1.Start() 가 들어왔을때는

t1 쓰레드한테 어떤 일을 실행 시킨 후

t1이 작업 끝나던 말던

바로 다음줄 코드를 실행 시키는건가요?

즉, t2.Start() 를 실행 시키는건가요?

그렇게 해서 각 쓰레드(일꾼)이 작업을 하다 여러

문제들이 생기는거구요

 

멀티 쓰레드 개발환경에서 일어날 수 있는 문제점은

확실하게 이해하고 있는데,

제일 첫 부분인 이게 도통 이해가 안돼서 질문 남깁니다.

그동안 해오던 코딩이 부정당하는 기분이라...

쓰레드 클래스만 저런식으로 작동된다는 정보가 어디에도 없네요..

문법적으로 저렇게 된다고 확신이 필요합니다 ㅠㅠ

 

요약하자면, 컴파일러는 'Start 함수' 를 만나게 될 경우

그 쓰레드한테 작업을 실행시키지만,

그 쓰레드의 작업을 기다려 주지는 않고

바로 다음 줄 코드를 실행 시키는건가요?

답변 2

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

ㅋㅋㅋ 네 멀티쓰레드 프로그래밍에 오시면
기존에 알던 코딩이 부정당하는 느낌이 들긴 합니다.
직원이 1명이었다가 이제 다수를 고용해서 난리를 치는 셈이죠.

0

안녕하세요, 인프런 AI 인턴입니다. jwen7님.

쓰레드의 실행 순서 및 동작 방식에 대해서는 아래의 기존 질문과 답변들이 도움될 것 같습니다.


Thread의 실행순서를 잘 이해한건지 모르겠어요

요약: 메인이 끝난 뒤에 실행한다기보다 동시에 실행됩니다. 쓰레드는 실행한 순간부터 독립적으로 작동하기 때문에 순서를 예측하기 어렵습니다.


메모리 배리어 질문

요약: 쓰레드가 동시에 실행되며, 순서에 따라 실행되는 것이 아니라 각각 독립적으로 작동합니다. 동시에 작업을 수행하기 때문에 _completetrue가 되기 전에 _answer 값을 읽을 수 있는 상황이 발생할 수도 있습니다.


안녕하세요 선생님 수업 예제 코드에 대해서 질문 드립니다.

요약: Thread.Sleep는 현재 실행 중인 쓰레드만 재우는 것이며, Start를 호출하면 쓰레드가 바로 실행되어 다른 쓰레드의 실행이 완료될 때까지 기다리지 않습니다.


하드웨어 최적화 질문

요약: 쓰레드는 운영체제에 의해 관리되며, 운영체제가 쓰레드 스케줄링을 통해 실행 순서를 결정합니다. 특정 쓰레드의 실행 순서를 보장하는 것은 어렵습니다.


저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기