본문 바로가기
반응형

리소스 관리3

C# SemaphoreSlim: 멀티스레드 리소스 접근 제어 예제와 설명 이 코드는 **SemaphoreSlim**을 사용하여 동시에 최대 4개의 스레드만 데이터베이스에 접근할 수 있도록 제한하는 예제입니다. 아래에서 코드 동작을 단계별로 분석하고, 이를 바탕으로 SemaphoreSlim의 동작 원리와 특성을 설명하겠습니다. internal class Program { static SemaphoreSlim _semaphore = new SemaphoreSlim(4); static void AccessDatabase(string name, int seconds) { Console.WriteLine("{0} waits to access a database", name); _semaphore.W.. 2025. 1. 16.
C# 스레드 제어: Semaphore와 SemaphoreSlim의 차이와 사용법 스레드 제어에서 세마포어(Semaphore) 개념세마포어는 멀티스레드 프로그래밍에서 리소스에 대한 접근을 제어하기 위한 도구입니다. 한정된 리소스(예: 데이터베이스 연결, 파일 처리 등)에 대해 동시에 접근 가능한 스레드 수를 제한하기 위해 사용됩니다.세마포어(Semaphore)의 기본 개념카운터 역할:세마포어는 내부적으로 카운터를 가지고 있습니다.이 카운터는 특정 리소스에 접근 가능한 최대 스레드 수를 나타냅니다.예를 들어, 카운터가 3이면, 동시에 3개의 스레드만 리소스에 접근할 수 있습니다.동작 원리:스레드가 세마포어에 접근하면 카운터가 감소합니다.작업이 끝나면 카운터가 증가합니다.카운터가 0이면, 다른 스레드는 대기 상태가 됩니다.비유:세마포어를 주차장으로 생각할 수 있습니다.주차장은 주차 가능한.. 2025. 1. 16.
다른 프로세스에서 파일을 사용 중인지 확인하는 함수. CheckFileLocked 두 함수는 파일이 잠겨있는지(다른 프로세스에서 사용 중인지)를 확인하는 역할을 수행합니다. 주된 차이점은 파일 작업 방식, 자원 관리, 가독성 및 코드 안정성에 있습니다.1. 공통점기능: 두 함수 모두 특정 파일이 잠겨있는지 확인합니다.핵심 아이디어: IOException이 발생하는지 여부로 파일 잠금 상태를 판단합니다.결과 반환:파일이 잠겨있으면 true.그렇지 않으면 false.2. 차이점a. 첫 번째 함수public bool CheckFileLocked(string sFile){ FileStream fs = null; try { fs = new FileStream(sFile, FileMode.Open, FileAccess.ReadWrite, FileShare.None);.. 2024. 12. 26.
반응형