Server/C# 비동기와의 전쟁

이 부분에 대해 계속 작성해서 아예 일지를 분리했습니다. 모든 자료를 여기 다 적어놓고 나중에 저처럼 비동기를 어려워하는 분들을 위해 유튜브 영상을 하나 만들어보면 좋을 것 같네요. 오늘 정리해 둘건 이겁니다. 위 두 코드는 딱 한줄 다른데요, 하나는 await 만 사용했고, 나머지 하나는 Task.Run 을 사용했습니다. 이 둘의 차이점은 await만 사용하면 같은 스레드 내에서 작동하고, Task.Run 을 사용하면 스레드풀에서 작동합니다. await 만 사용한 경우 디버깅 영상 Task.Run 사용한 경우 디버깅 영상
신입 개발자가 작성한 글입니다. 잘못된 정보가 있을 수 있습니다. 알려주신다면 적극 수정하도록 하겠습니다. 2023/08/16 기준 비동기에 대한 새로운 정보를 얻게 되어 비동기에 대해 더 공부하는 중입니다. 해당 공부 이후 새로 글을 작성하겠습니다. 앞으로 글의 서두에 이 문장을 꼭 달아야겠습니다. 지금의 제 머릿속에는 잘못된 정보가 굉장히 많다는 것을 거듭 깨닫습니다 🥲 우선, 제가 이 글과 이 글에서 찾던 비동기 입력은 이 세상에 없었습니다. 비동기의 의미를 잘못 알고 있었던 것입니다. 비동기 프로그래밍의 의미 동기식 프로그래밍의 단점 동기식 프로그래밍에서는 한 작업이 끝날 때까지 다음 작업을 시작하지 못하므로, 작업이 끝날 때까지 대기해야 하는 상황이 발생합니다. 이는 처리량과 응답 시간을 떨어뜨..
드디어 이벤트 부분을 배워서 정리해 보도록 하겠습니다! 내가 알고 있던 이벤트 with LUA LUA 에서는 1) 이벤트 타입을 만들고, 2) 그 이벤트를 Event Invoke 함수를 통해 호출시키고, 3) 이벤트를 감지하는 Event Handler 를 추가하여 이벤트를 발생시켰습니다. 이벤트의 장점 저는 이벤트를 정말 사랑했습니다. 한 번의 호출로 여러 함수를 호출할 수 있었거든요. 저는 코드를 작성할 때 가장 중요한 것이 현실과의 유사성이라고 생각하는데, 이벤트를 사용하면 마치 프로그램과 대화를 하는듯한 코딩이 가능했습니다. 다시말해 아래 그림처럼, 각 Manager Class 들이 내 얘기를 듣고 있는 것처럼 코딩할 수 있었습니다. 이벤트의 단점 하지만 이벤트가 좋다고 이벤트를 남발하면, 코드 속..
세줄요약 - 스레드끼리 지역변수를 매개변수로 전달 가능 - 스레드끼리 변수 하나를 스태틱으로 공유 가능 - 스레드끼리 지역변수 하나를 매개변수로 공유.... 하고싶음 ㅜㅜ 코드를 작성하고 실행하는데, 작업이 오래 걸리기 시작했습니다. 처음 10초 정도는 괜찮았습니다. 15초 후 불안해집니다. 20초가 넘어 가자 뭔가 잘못되어가고 있는 게 아닌지, 내가 이 일로 회사에서 짤리지는 않을지 조마조마해집니다. 저는 이 일이 제대로 돌아가고 있는지 확인해 주는 스레드를 만들기로 했습니다. 그런데 스레드A 의 변수를 스레드B 에서 출력할 수 있을까요? 가능합니다! 1. 스레드 간 값 전달 방식 public static void Main(string[] args) { int count = 1; Thread thre..
어떤 스레드의 작업이 끝나야만 다음 작업을 수행하는 스레드가 필요할 때, Join 메서드를 이용해서 해당 스레드의 작업이 끝날 때까지 기다릴 수 있습니다. 사용 예시 public static void Main() { Thread t = new Thread(Wait2Seconds); t.Start(); t.Join(); Console.WriteLine("나 너를 기다렸어"); } static void Wait2Seconds() { Thread.Sleep(2000); Console.WriteLine("업무 끝!"); } 업무 끝! 나 너를 기다렸어 그런데 이 Join 메서드는 스레드 풀을 사용할 때에는 사용할 수 없습니다. 스레드 풀은 스레드 사용이 종료되어도 스레드가 반납되지 않기 때문입니다. 이럴 때에는..
개발자 재은
'Server/C# 비동기와의 전쟁' 카테고리의 글 목록