본문 바로가기

Server8

📚 xUnit 설치 & 사용법 정리 📕 xUnit?C# .NET 테스트 자동화 툴입니다.근데 솔직히 아직 뭐가 좋은지 모르겠음 집계해주는거 ? 병렬로 해주는거? 이건 그냥 라이브러리 안쓰고도 할 수 있지 않나 🖼️ 환경 설정 1. 테스트 솔루션 생성테스트를 하기 위해, 공식 문서의 예제 파일을 생성하는 방법입니다. ( 출처 : xUnit 공식문서 ) dotnet new install xunit.v3.templatesdotnet new xunit3쉘에 위 스크립트를 실행시키면, 아래와 같이 솔루션 파일이 생겨납니다. 2. 현재 솔루션에 xUnit 적용개발된 솔루션에 xUnit만 추가하는 방법입니다. xUnit을 추가할 프로젝트의 csproj 파일을 텍스트 뷰어로 열어줍니다. 저는 위와 같이 나오네요. 솔루션 파일의 .. 2024. 11. 15.
SemaphoreSlim lock 을 하면 비동기를 사용할 수 없다.더보기정확히는 위험하다. ( lock(리소스) {작업} 식으로 사용할 때에는 아예 컴파일 에러가 난다. )lock 은 다른 스레드에서 이 리소스에 접근하지 못하게 하는 기법이기 때문이다. 비동기 호출을 하게 되면 await 를 할 때마다 실행 중이던 작업이 중지되고 대기 상태가 되었다가 스레드 풀의 스레드 중 하나에서 실행이 되는데, 이때 스레드가 원래 lock 을 했던 스레드가 아닐 가능성이 매우 높기 때문에 이 리소스에 접근하지 못하게 되는 현상이 생겨날 수 있다. 아무튼 이런 이유 때문에 비동기 함수에서 lock 을 주의해서 써야 한다. 비동기에서 lock 을 사용하려면 SemaporeSlim 을 사용하면 된다.SemaphoreSlim 은 lock 과는 .. 2024. 1. 2.
Task.Run vs await 이 부분에 대해 계속 작성해서 아예 일지를 분리했습니다. 모든 자료를 여기 다 적어놓고 나중에 저처럼 비동기를 어려워하는 분들을 위해 유튜브 영상을 하나 만들어보면 좋을 것 같네요. 오늘 정리해 둘건 이겁니다. 위 두 코드는 딱 한줄 다른데요, 하나는 await 만 사용했고, 나머지 하나는 Task.Run 을 사용했습니다. 이 둘의 차이점은 await만 사용하면 같은 스레드 내에서 작동하고, Task.Run 을 사용하면 스레드풀에서 작동합니다. await 만 사용한 경우 디버깅 영상 Task.Run 사용한 경우 디버깅 영상 2023. 11. 3.
내가 생각한 비동기 입력은 없었다 신입 개발자가 작성한 글입니다. 잘못된 정보가 있을 수 있습니다. 알려주신다면 적극 수정하도록 하겠습니다. 2023/08/16 기준 비동기에 대한 새로운 정보를 얻게 되어 비동기에 대해 더 공부하는 중입니다. 해당 공부 이후 새로 글을 작성하겠습니다. 앞으로 글의 서두에 이 문장을 꼭 달아야겠습니다. 지금의 제 머릿속에는 잘못된 정보가 굉장히 많다는 것을 거듭 깨닫습니다 🥲 우선, 제가 이 글과 이 글에서 찾던 비동기 입력은 이 세상에 없었습니다. 비동기의 의미를 잘못 알고 있었던 것입니다. 비동기 프로그래밍의 의미 동기식 프로그래밍의 단점 동기식 프로그래밍에서는 한 작업이 끝날 때까지 다음 작업을 시작하지 못하므로, 작업이 끝날 때까지 대기해야 하는 상황이 발생합니다. 이는 처리량과 응답 시간을 떨어뜨.. 2023. 8. 8.
[적다가 좀 두서없고 이상한거같애서 비밀글/이었으나 나중에 보니 그닥 이상하진않다] 스레드 공부기록 윈도우는 프로세스를 생성할 때 기본적으로 한 개의 스레드를 함께 생성하며, 이를 주 스레드라고 한다.스레드 문맥 ??스레드 s1과 s2가 프로세스 p1에 속한다면, 두 스레드간에 실행이 변경될 때 프로세스 문맥은 변경되지 않는다. 하지만 다른 프로세스에 속하는 스레드로 실행이 변경되면, 프로세스 문맥 정보가 바뀌어 많은 CPU자원을 사용하게 된다.스레드 실행 변경 ??Main문에 들어오면 주 스레드가 발급된다. 그리고 여기서 추가적으로 스레드가 발행되고, 그 스레드가 실행 중이어도 주 스레드에 더 이상 할 일이 없으면 주 스레드는 종료된다.스레드의 종료는 프로그램의 종료를 의미한다. 이처럼 프로세스의 종료를 막고 있는 스레드를 포그라운드 스레드라고 하는데, 반대의 의미로 백그라운드 스레드도 있다. 그럼 .. 2023. 7. 4.
C# 이벤트 (LUA와 비교) 드디어 이벤트 부분을 배워서 정리해 보도록 하겠습니다! 내가 알고 있던 이벤트 with LUA LUA 에서는 1) 이벤트 타입을 만들고, 2) 그 이벤트를 Event Invoke 함수를 통해 호출시키고, 3) 이벤트를 감지하는 Event Handler 를 추가하여 이벤트를 발생시켰습니다. 이벤트의 장점 저는 이벤트를 정말 사랑했습니다. 한 번의 호출로 여러 함수를 호출할 수 있었거든요. 저는 코드를 작성할 때 가장 중요한 것이 현실과의 유사성이라고 생각하는데, 이벤트를 사용하면 마치 프로그램과 대화를 하는듯한 코딩이 가능했습니다. 다시말해 아래 그림처럼, 각 Manager Class 들이 내 얘기를 듣고 있는 것처럼 코딩할 수 있었습니다. 이벤트의 단점 하지만 이벤트가 좋다고 이벤트를 남발하면, 코드 속.. 2023. 6. 9.