스레드 된 버퍼를 시뮬레이트하기 위해 pthread 라이브러리를 사용하고 있습니다. 또한 한 번에 하나씩 중요한 섹션 변수에 액세스하는 솔루션으로 세마포를 사용하고 있습니다.셈플 및 스레드 사용에 대한 도움말
주요 문제는 제작자가 전체 버퍼를 채우고 있으며 소비자가 전체 버퍼를 비우는 것입니다. 이 코드가 맞습니까? 버퍼가 꽉 찼거나 비어 있기 전에 생산과 소비가 일어난다 고 가정하고있었습니다.
내 코드 및 모든 의견을 많이 도움이 될 것입니다, 네, 클래스입니다.
는 는 funkohland.com/pthreads/log.txt에서 로그 파일을 볼 ...void *Producer(void *threadid)
{
long tid;
tid = (long)threadid;
while (c < Cycles) //While stuff to buffer
{
pthread_mutex_lock(&lock);
while(size == BUFFER_SIZE)
{
pthread_cond_wait(&cond, &lock);
}
buffer [full] = rand();
data << size+1 << ". Produce: " << buffer[full] << endl;
printBuffer();
full = (full + 1) % BUFFER_SIZE;
size++;
pthread_cond_signal(&cond1);
pthread_mutex_unlock(&lock);
c++;
}
pthread_exit(NULL);
}
당신은 또한 모든 코드를 다운로드하거나 로그 파일을 볼 수 있습니다 사전에 감사합니다
세마포어 대신 뮤텍스를 사용 하시겠습니까? –