0
#include<stdio.h>
#include<pthread.h>
#include<semaphore.h>

sem_t e,n,s;
int a[10];
int flag=0;
int sizeb=10;

void take()
{
    int out;
    if(flag==0)
    {
        printf("the consumer is waiting\n");
    }
    else
    {
    printf("\n the consumer has entered the cs:\n");
    for(out=0;out<10;out++)
    {

        printf("\t%d",a[out]);
    }
}
}
void consumer()
{
    sem_wait(&n);
    sem_wait(&s);
    printf("\n Consumer Unit\n");
    take();
    if(flag==1)
    {
        printf("\n the consumer has consumed\n");
    }
    sem_post(&s);
    sem_post(&e);
}
void append()
{
    int in;
    printf("\n the producer has entered the cs\n");
    for(in=0;in<10;in++)
    {
        a[in]=in+1;
        printf("\t%d",a[in]);
    }
}
void producer()
{
    sem_wait(&e);
    sem_wait(&s);
    printf("\n producer unit\n");
    append();
    printf("\n the producer has produced\n");
    sem_post(&s);
    sem_post(&n);
    flag=1;
}
int main()
{
    sem_init(&s,0,1);
    sem_init(&n,0,1);
    sem_init(&e,0,20);
    pthread_t p1,p2,p3;
    pthread_create(&p1,NULL,(void *)consumer,NULL);
    pthread_join(p1,NULL);
     pthread_create(&p2,NULL,(void *)producer,NULL);
        pthread_join(p2,NULL);
     pthread_create(&p3,NULL,(void *)consumer,NULL);
        pthread_join(p3,NULL);
    return 0;
}
0

3 Answers 3

3

Using -pthread is preferred to -lpthread in this specific case.

Sign up to request clarification or add additional context in comments.

Comments

2

how are you compiling it?? compile using gcc program_name -lpthread

Comments

0

Add -lpthread in the command line when compiling to search for the pthreads library when linking.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.