C# Pipeline
Post
원문 보기 →C# Pipeline
우리가 어떤 TCP 서버를 만든다고 가정하자.NetworkStream의 ReadAsync 혹은 Socket의 ReceiveAsync 등의 함수를 사용하여 (전자는 Async/Await, 후자는 Callback) 소켓의 "수신 로직"을 작성할 때, 항상 고려해야 하는 사항들이 있다. 클라이언트가 서버로 한번에 보내고자 하는 데이터의 단위를 "패킷"이라고 정의하자.수신을 위해, Receive한 데이터를 "담아서 넘겨줄" 버퍼를 API에 매번 제공해야 한다. 이러다 보니.. 효율이 나빠진다.버퍼를 생성하려면 풀링을 하거나, 그때그때 메모리를 할당하거나 둘 중 하나를 택해야 하는데... 어떻게 해도 필연적으로 GC 이슈가 생긴다.풀링을 했을 때 발생하는 비용은... 풀의 자료구조에 버퍼를 매번 Push / Po


