본문 바로가기

일하면서 사용한 짧은 지식/C#

(2)
IntPtr로 전달되는 바이너리 데이터 파일로 쓰기 1. 상황 ffmpeg 디코더로 인코딩된 데이터를 넘기기 전에 제대로 된 데이터가 들어오는지 검증하기 위하여 파일로 써서 팟플레이어나 VLC로 확인하려고 했다. 이벤트가 발생할 때 IntPtr 형태로 포인터가 넘어오는 상태였고 이 포인터가 가리키는 바이너리 데이터를 파일로 써야 했다. 2. 사용한 방법 Marshal.Copy를 이용하여 byte 배열에 데이터를 복사하고 FileStream으로 Write하였다. byte[] data = new byte[streamLen]; Marshal.Copy(streamData, data, 0, (int)streamLen); string fileName = "test.ts"; using (FileStream test = new FileStream(fileName, Fi..
Thread와 ThreadPool 중 선택하기 Thread 일반적으로 하나의 쓰레드를 오래 동안 사용하거나 동일한 쓰레드에서 계속 작업을 진행해야 하는 경우 사용하는 것이 좋다. ThreadPool .NET의 Thread 클래스를 이용하여 쓰레드를 하나씩 만들어 사용하는 것이 아니라, 이미 존재하는 쓰레드풀에서 사용가능한 작업 쓰레드를 할당 받아 사용하는 방식이다. 다수의 쓰레드를 계속 만들어 사용하는 것보다 효율적이다. 짧게 짧게 실행되는 쓰레드를 사용할 때 이미 존재하는 쓰레드풀에서 할당 받아 사용하는 게 좋다. 내가 구현해야할 쓰레드 작업이 주기적으로 한번씩 비동기로 동작하고 종료하는 메서드라 ThreadPool을 이용하는 것이 좋다고 판단하였다. C# Task 클래스는 쓰레드풀로부터 쓰레드를 가져와 비동기 작업을 실행 Task클래스 사용을 위..