TLS
-
알아두면 좋을 개념개발/C·C++ 2022. 1. 3. 21:49
IOCP를 이용한 멀티스레드 네트워크 프로그래밍에서 WSASend가 쉽지 않으며 버퍼 관리도 마찬가지입니다. 환형 버퍼를 사용하는 방법이 있으며 다른 방법은 메모리 풀링을 활용하는 것입니다. 1. 전역 버퍼 매니저를 통해 필요할 때마다 메모리를 할당받고 이 메모리는 쓰임이 다 끝나면(ref_count가 0이 되면) 자동으로 재활용됩니다. make_shared 객체를 만들 때 두 번째 인수로 deleter를 넣을 수 있는데 멤버 함수가 아닌 클래스 스태틱 함수를 넣어주면 됩니다. 반납할 때 매니저 클래스에서 관리하는 벡터 객체에 push_back 해줍니다. 2. 메모리 덩어리는 TLS에서 관리되도록 합니다. 그러면 획득한 메모리에 대해서는 멀티스레드를 신경쓰지 않아도 됩니다. 전역 객체인 버퍼 매니저에서 ..