producer consumer (using Monitor) code is not working when sleep() is used?

sonus21
#include<bits/stdc++.h>
#include<pthread.h>
#include<unistd.h>
#define MAX 10
using namespace std;
class BoundedBuffer
{
private:
  int buffer[MAX];
  int fill, use;
  int fullEntries;
  pthread_mutex_t monitor;  // monitor lock
  pthread_cond_t empty;
  pthread_cond_t full;
public:
  BoundedBuffer ()
  {
    use = fill = fullEntries = 0;
  }
  void produce (int element)
  {
    pthread_mutex_lock (&monitor);
    while (fullEntries == MAX)
      pthread_cond_wait (&empty, &monitor);
    buffer[fill] = element;
    fill = (fill + 1) % MAX;
    fullEntries++;
    //sleep(rand()%2);
    pthread_cond_signal (&full);
    pthread_mutex_unlock (&monitor);
  }
  int consume ()
  {
    pthread_mutex_lock (&monitor);
    while (fullEntries == 0)
      pthread_cond_wait (&full, &monitor);
    int tmp = buffer[use];
    use = (use + 1) % MAX;
    fullEntries--;
    //sleep(rand()%2);
    pthread_cond_signal (&empty);
    pthread_mutex_unlock (&monitor);
    return tmp;
  }
}b;
void* producer(void *arg){
int i=1;
while(true){
b.produce(i);
i++;
}
}
void* consumer(void *arg){
while(true){
cout<<b.consume()<<" ";
}
}
int main(){
pthread_t t1,t2;
pthread_create(&t1,NULL,producer,NULL);
pthread_create(&t2,NULL,consumer,NULL);
pthread_join(t1,NULL);
pthread_join(t2,NULL);
return 0;
}

Whenever sleep() is added in BoundedBuffer.consume() and BoundedBuffer.produce(int ) then it doesn't print any output.But when there is no sleep() in these functions then it works fine and print output as it should be .Why it's happening ?
Reference: http://pages.cs.wisc.edu/~remzi/OSTEP/threads-monitors.pdf

SimpleGuy

I see the output being printed when i use fflush(stdout)

while(true){
cout<<"["<<b.consume()<<"] ";
fflush(stdout)
}

Output:

Magnum@SimpleGuy:~ [52]$ ./a.out [1] [2] [3] [4] [5] [6] [7] [8]

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Java

Using asyncio.Queue for producer-consumer flow

From Dev

Producer Consumer program using semaphores and pthreads

From Dev

Producer Consumer multithreading why Thread.sleep is needed?

From Dev

Producer / Consumer - Producer using high CPU

From Dev

Producer Consumer - using semaphores in child Processes

From Dev

Producer/Consumer pattern with a batched producer

From Dev

Result of algorithm in reverse, Producer-Consumer solution using Semaphores

From Dev

producer consumer (using Monitor) code is not working when sleep() is used?

From Dev

Producer Consumer Program using wait() and notify() in Java

From Dev

Producer Consumer bounded buffer using Semaphore

From Dev

How to expose a class implementing producer consumer pipeline to client code in an API?

From Dev

Producer and Consumer using Lock in Java

From Dev

Cannot catch SIGINT signal in a producer-consumer program where JNI is used in consumer thread

From Dev

stopping consumer when producer can't provide anymore

From Dev

How to consume in Producer-Consumer using Semphores?

From Dev

How to make fast producer paused when consumer is overwhelmed?

From Dev

Using asyncio.Queue for producer-consumer flow

From Dev

Strange output using Atomic Integer in Producer Consumer Problem in Java

From Dev

Implement a consumer and producer system using Spring integration

From Dev

JAVA consumer-producer multi-threaded application - flow of code

From Dev

How to determine when my Producer Consumer finish it's job

From Dev

Producer & consumer threads using condition variables

From Dev

Producer Consumer Program using wait() and notify() in Java

From Dev

No signal to monitor when waking up after sleep

From Dev

Ruby - Unexpected results using multi-threading (producer/consumer model) when iterating

From Dev

When will deadlock occur in this producer-consumer code

From Dev

code not working when setTimeout is used

From Dev

Producer-Consumer example not working

From Dev

Producer-consumer using semaphore in C

Related Related

  1. 1

    Using asyncio.Queue for producer-consumer flow

  2. 2

    Producer Consumer program using semaphores and pthreads

  3. 3

    Producer Consumer multithreading why Thread.sleep is needed?

  4. 4

    Producer / Consumer - Producer using high CPU

  5. 5

    Producer Consumer - using semaphores in child Processes

  6. 6

    Producer/Consumer pattern with a batched producer

  7. 7

    Result of algorithm in reverse, Producer-Consumer solution using Semaphores

  8. 8

    producer consumer (using Monitor) code is not working when sleep() is used?

  9. 9

    Producer Consumer Program using wait() and notify() in Java

  10. 10

    Producer Consumer bounded buffer using Semaphore

  11. 11

    How to expose a class implementing producer consumer pipeline to client code in an API?

  12. 12

    Producer and Consumer using Lock in Java

  13. 13

    Cannot catch SIGINT signal in a producer-consumer program where JNI is used in consumer thread

  14. 14

    stopping consumer when producer can't provide anymore

  15. 15

    How to consume in Producer-Consumer using Semphores?

  16. 16

    How to make fast producer paused when consumer is overwhelmed?

  17. 17

    Using asyncio.Queue for producer-consumer flow

  18. 18

    Strange output using Atomic Integer in Producer Consumer Problem in Java

  19. 19

    Implement a consumer and producer system using Spring integration

  20. 20

    JAVA consumer-producer multi-threaded application - flow of code

  21. 21

    How to determine when my Producer Consumer finish it's job

  22. 22

    Producer & consumer threads using condition variables

  23. 23

    Producer Consumer Program using wait() and notify() in Java

  24. 24

    No signal to monitor when waking up after sleep

  25. 25

    Ruby - Unexpected results using multi-threading (producer/consumer model) when iterating

  26. 26

    When will deadlock occur in this producer-consumer code

  27. 27

    code not working when setTimeout is used

  28. 28

    Producer-Consumer example not working

  29. 29

    Producer-consumer using semaphore in C

HotTag

Archive