#include<stdio.h>
#include<pthread.h>
int buffer[100];
int count = 0;
int in = -1;
int out = 0;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t buffer_has_space = PTHREAD_COND_INITIALIZER;
pthread_cond_t buffer_has_>PTHREAD_COND_INITIALIZER;
void producer()
{
int i;
for(i=0; i<1000; i++)
{
pthread_mutex_lock(&mutex);
if(count == 100)
pthread_cond_wait(&buffer_has_space, &mutex);
in++;
in%=100;
buffer[in] = i;
count++;
pthread_cond_signal(&buffer_has_data);
pthread_mutex_unlock(&mutex);
}
}
void consumer()
{
int i, data;
for(i=0; i<1000; i++)
{
pthread_mutex_lock(&mutex);
if(count==100)
pthread_cond_wait(&buffer_has_space, &mutex);
out++;
out %= 100;
>buffer[out];
count--;
pthread_cond_signal(&buffer_has_data);
pthread_mutex_unlock(&mutex);
printf(">, data);
}
}
int main()
{
int i;
pthread_t thread[2];
pthread_create(&thread[0], NULL, producer, NULL);
pthread_create(&thread[1], NULL, consumer, NULL);
for(i=0; i<2; i++)
pthread_join(thread[i], NULL);
return 0;
}
어떻게 해야함?
브렠포인트 각 함수에 다 걸어도 xcode에선 그냥 순차적 디버깅처럼만 보여주던데.
로그라는게 출력같은 걸 하나씩적는다 이정도? thread_id라던지