inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)

게임 구조 변경

Thread.Sleep(0) 의미

1064

BBAKK

작성한 질문수 35

0

1. Thread.Sleep(0)은 실행권을 커널에다 넘겨주어 CPU까 쓸데 없이 사용되는 것을 우회 할 수 있다는 것이 정확히 어떤식으로 동작하는 것인가요?

2. Thread.Sleep(0) 과 Thread.Yield()의 차이는 무엇인가요?

( CS 지식이 부족하여 검색 내용이 제대로 이해가 안되어 질문드립니다 )

*검색 내용

differences between Thread.Yield() and Thread.Sleep(0)

MMORPG

답변 1

1

Rookiss

1.
요약하면 운영체제 커널이 유저레벨 프로그램(메모장, LOL 등등)한테 실행 시간(timeslice)을 배정해서,
그 시간만큼 유저레벨 프로그램이 실행되고,
시간이 끝나면 다시 CPU 소유권을 반납하는게 일반적인 상황입니다.
근데 유저레벨 프로그램에서 딱히 할일이 없으면 굳이 무한루프를 돌면서
시간을 기다리기 보다는 미연에 소유권을 반납할 수 있습니다.
구체적으로 어떻게 동작하는지는 운영체제에 따라 다르고 복잡한 주제입니다.

2. 
자기가 할당받은 실행 시간(timeslice)을 반납하면서
다른 프로세스한테 양보할 때 여러가지 시나리오가 있는데
1) 아무한테나 상관없이 넘겨줄지,
2) 자기보다 우선순위가 같거나 높은 애들한테만 넘겨줄지,
3) 동일한 CPU 코어에서 실행되는 프로세스한테만 넘겨줄지 등; 이 있는데
그 차이에 대해 설명하고 있습니다.

어느 쪽을 선택해도 아주 큰 차이는 없으니
OS에 대해 공부하기 전에는 그냥 Sleep이나 Yield나
아무거나 골라서 사용해도 무방합니다.

마우스 이벤트 처리방법(오브젝트간 인터렉션)

0

623

1

RecvArgs_Completed에서 lock을 안하는 이유

0

517

1

Entity framework 질문드립니다.

0

576

2

json 직렬화

1

289

1

mmo 와 pvp

0

535

2

github로 프로젝트를 push, pull할 때 질문

1

530

1

Iocp 서버 관련 질문드립니다.

0

329

1

서버 관련 질문

0

397

1

DB 처리관련 질문이 있습니다

0

302

1

안녕하세요. 질문드립니다.

1

1509

2

이해한 것이 맞나 궁금합니다.

0

287

1

마이그레이션 파일이 이상합니다.

0

283

1

강의 마지막으로 질문 드립니다.

0

679

2

ItemDbId,구조 설계

0

265

1

MMO 서버 관리 질문 드립니다!

0

323

1

디비 정보 나누기

0

241

1

AccountDb 업데이트

0

308

1

콘솔창이 아니라 브라우저에서 실행

0

282

2

메모리 누수문제.

0

497

1

유니티에서 클라이언트 빌드후 실행하면 맵 로드가 안됩니다.

0

364

1

외부 네트워크에서도 접속해서 게임하기

1

339

1

유니티클라에서 패킷을 계속 보내지 않고 lockstep이나 추측항법으로 동기화를 할 수 있을까요?

0

597

1

서버 메모리와 DB 저장 관련 질문

0

370

1

JsonUtility.FromJson 관해서 질문있습니다.

0

278

1