private static GameManager instance;
private static lockObj = new Object();
public static GameManager Instance
{
get
{
lock(lockObj)
{
if(instance == null)
instance = new GameManager();
}
return instance;
}
}






public enum PACKETID : int
{
//...생략
REQ_USER_ACCESSION = 1095,
RES_USER_ACCESSION = 1096,
//...생략
}
public enum PACKETID : int
{
//...생략
REQ_USER_ACCESSION = 1095,
RES_USER_ACCESSION = 1096,
//...생략
}

클라이언트에서 해당 내용물을 받아옴


병렬이 아님
기다리는 작업은 스레드에 맡기고, 나머지는 코드 먼저 실행 Task.Delay(3000); 스레드를 할당
cpu가 대기를 하지 않고 바로 반환, 기다리지 않고 병렬 처리
3초 동안 스레드를 반환 -> 스레드가 다른 일 하러 감
그 스레드는 다른 작업을 수행 가능 -> 스레드가 다른 일 하는 중
3초 후 다른 작업이 완료되면 다시 이어서 실행 -> 스레드가 다른 일이 완료 되면 다시 원래 자리로 와서 일함
스레드는 놀지 않음
Task.Delay()는 보통 델리게이트로 구현한다. Delay가 끝나면 다른 함수 호출하게 보통 함
async / await
async : 비동기 함수를 선언 , 반드시 aswait를 포함할 필요는 없다. 반환형은 Task,Task, void 중 하나
await : 비동기 작업을 기다림, 현재 스레드를 멈추지 않고, 바로 반납 바로 반납