페이지 선택
Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Search in pages

Count Semaphore

Semaphore 값이 2 이상인 경우를 Count Semaphore라고 한다. 즉 공유자원의 개수가 다수일 경우를 의미하겠다.

RTOS 환경에서 Count Semaphore를 사용하는 경우는 실질적으로 드물어 보인다.

 

 

Count Semaphore 사용용례

큰 메모리를 사용하는 thread들 중 최대 3개까지만 동시 할당이 가능하도록 제한하는 경우,

아래와 같이 하면

♦ huge_memory_therad()는 여러개가 실행이되어도,

♦ heavy_memory_job() 함수는 최대 3개까지만 하용되고 나머지는 Blocking 된다.

 

“`c
mos_semphr_id_t sem_id;

 

void init_test() {
sem_id = mos_semphr_new(3);
}

 

//~~~~

void huge_memory_thread() {

while(1) {
// wait job
wait_job();

mos_semphr_acquire(sem_id, MOS_WAIT_FOREVER);
char *buf = malloc(100 * 1024)

// heavy memory job
heavy_memory_job(buf);
free(buf);
mos_semphr_release(sem_id);
}

}
“`

Adsense

EMW3070

Viewed Page List