C#을 사용하여 개발중인 응용 프로그램에 대해 버퍼 관리를 개발해야합니다.C#을 사용하는 버퍼 풀 관리
기본적으로 응용 프로그램은 들어올 때 장치에서 메시지를 수신합니다 (짧은 시간 내에 많은 메시지가있을 수 있음). 어떤 종류의 버퍼 풀에 큐를 대기시켜 관리 된 방식으로 처리 할 수 있도록해야합니다.
우리는 256 바이트의 청크 (모든 메시지가 그보다 작습니다)에 메모리 블록을 할당하고 버퍼 풀 관리를 사용하여 수신 메시지 및 버퍼 풀에 사용할 수있는 사용 가능한 버퍼 풀을 확보하려고합니다 처리 할 준비가되었습니다.
그래서 흐름은 "버퍼 확보"(처리) "릴리스 버퍼"또는 "풀에 남겨두기"입니다. 버퍼가 채워지는 시점을 알아야합니다.
잠재적으로 우리는 버퍼를 "들여다보고"풀에서 다음 버퍼를 얻는 것이 아니라 우선 순위가 가장 높은 버퍼를 확인해야합니다.
이미 .NET에서이를 지원합니까? 아니면 사용할 수있는 일부 오픈 소스 코드가 있습니까?
좋은 생각이 아닙니다. interop과 관련된 작업을 수행하는 모든 작업은 GC가 객체를 고정해야하기 때문에 조각화 (메모리 부족 예외가 발생합니다)가 발생합니다. –
무엇 사이의 상호 운용성? 실? 응용 프로그램? 프로세스? – grieve
나는 nzpcmad가 P/Invoke가없는 순수한 관리를하고 있다고 생각한다. – user7116