semaphore에 관한 문제 입니다
봄나
세마포어를 아래와 같은식으로 구현하여 .h로 만든후
메인에는
int max_capacict = 10;
semaphore max_capacity;
이런식으로 세마포어를 선언한 후
tHandles[i] = (HANDLE)_beginthreadex(NULL,0, customer, &dwThreadID[i], 0, &dwThreadID[i]);
unsigned int WINAPI customer(void* thread_ID)
{
semWait(max_capaty);
semSignal(max_capaty);
}
이런식으로 사용하여 FIFO가 지원되는 세마포어를 구현 하려고 합니다.
큐는 구현이 완료되었고 쓰레드나 다른 부분들도 다 구현이 되었는데
세마포어를구현하던중에 아래 부분은 어떤식으로 구현해야 할지 도저히 모르겠습니다.
고수님들 도와주시면 정말 감사하겠습니다.ㅜㅜ
/***************************************************/
place this process in s.queue;
block this process;
remove a process P from s.queue;
place process P on ready list;
/***************************************************/
struct semaphore{
int count;
queueType queue;
};
void semWait(semaphore s)
{
s.count--;
if (s.count 0)
{ place this process in s.queue;
block this process;
}
}
void semSignal(semaphore s)
{
s.count++;
if (s.count ≤ 0)
{
remove a process P from s.queue;
place process P on ready list;
}
}