본문 바로가기

synchronization2

리눅스 서버 세마포어(Semaphore) 프로세스 동기화 문제 해결 Semaphore는 컴퓨터 과학에서 동시성 제어를 위해 널리 사용되는 개념으로, 운영체제나 프로그래밍에서 다중 프로세스나 스레드가 자원을 공유할 때 발생할 수 있는 문제들을 방지하기 위해 사용됩니다. Semaphore는 기본적으로 카운터로서 작동하며, 특정 자원에 대한 접근을 제한하는 데 사용됩니다. Semaphore의 작동 방식 초기화: Semaphore는 정수 값으로 초기화됩니다. 이 값은 동시에 접근할 수 있는 스레드 또는 프로세스의 최대 수를 나타냅니다. 대기(Wait): 프로세스/스레드가 자원에 접근하려고 할 때, Semaphore의 값을 감소시킵니다. 만약 Semaphore 값이 0이면, 이는 모든 자원이 사용 중임을 의미하고, 추가적인 프로세스/스레드는 대기 상태가 됩니다. 신호(Signal.. 2024. 2. 20.
쓰레드(Thread)간의 동기화(Synchronization) 멀티 태스킹을 말할때 피할수 없는것이 동기화(Synchronization)문제이다. 동기화란 멀티 태스킹 환경에서 여러개의 처리(태스크)를 서로의 진행상태에 맞추어 진행시키는것을 말한다. 문제점 코드 (플래그를 사용한 배타적 제어 코드) bool InUse = false; int func(void) { .... while(InUse) { } InUse = true; // 다른곳에서 접근 금지 File * fp = fopen("sample.dat", "wb"); if(fp != NULL) { ...... fclose(fp); } InUse = false; // 다른곳에서 접근 허용 } 이 코드의 문제점은 첫째, InUse가 false인것을 확인하는 조작가 true로 조작 하는 사이에 비록 짧지만 시간간격이.. 2009. 1. 30.