Single Producer and multiple consumer using multithreating

In this project, we simulate a tandoori chicken lunch buffet restaurant with one chef and

multiple guests, which is similar to a single producer/multiple consumers problem. We

implement one program with multiple threads, each of which holds either a chef or a guest.

We also apply one synchronization tool – semaphores, which can solve an issue for

synchronizing common resources with multiple threads. Through this project, we will learn

how to create multi-threaded process and how to synchronize threads using semaphores.


A. Producer - consumer problem

The restaurant resembles a producer consumer problem: in a producer side, chefs are cooking

and providing food, guests are trying to eat it when it is available. When simulating the

restaurant, we have some issues, each of which can be utilized by using concepts learnt in the


First, we need executable units, each of which can run simultaneously during execution. Also

some resources such as food and dining tables should be shared by all guests.

Multiprogramming can be a good approach, but it brings us other issues we need to consider –

parallel programming or even concurrent programming. Therefore, we will apply alternative

approach using multithreading, which costs less than the approaches. We will briefly review

this concept in the subsection B.

Second, we should manage the shared resources, e.g., food and dining tables, without any

conflicts. Two guests may race to get one food, and the racing game will cause some unhappy

and uncomfortable situation. These resources are so critical that we need to have a powerful

tool. We can address this issue and find a powerful solution – semaphore. Semaphores can

enable us to access the critical resources without any conflicts. We will briefly review this

concept in the next subsection C.

For simplifying this project, we model a small restaurant in which one chef works.

B. Multi-threaded process

Process defines an executable unit to perform a task, which is called a thread. If the process

needs to run one task at the one moment, one thread is enough to be created, because the

created thread may hold the next task. This process is called a single-threaded process, and

this design does not fit for processes which needs to run multiple tasks simultaneously. This

issue is solved by multi-threaded design, in which multiple threads can be created and run. For

more information, review the chapter 4.

CS 5500 Project 2

University of Central Missouri 2

C. Semaphores

When multiple threads are running simultaneously, they may access the same resources

declared as global variables. It has many potential problems because some changes by one

thread affect other threads which need the previous information. This conflict may cause

severe problems and must be avoided. Synchronization tools are developed to solve this

problem. Semaphores are one of the tools. There are two types of semaphores – binary

semaphore (similar to mutex) and counting semaphore. A thread which obtains the semaphore

can access the critical resources, whereas other threads should wait until the semaphore is

available to get. Using the semaphores, we can control accesses to the critical resources. For

more information, review the chapter 5.

III. Implementation

The program has the similar format as the first project. When user starts the program, it will

show the prompt after group ID consisting of section # and group # (that is,

section#_group#> $). To simulate the restaurant, user will the following command with three


tcr -option -Number of cooked food –Number of dining table

You have any question mail me.

Навички: Програмування на С

Деталі: multiple producer multiple consumer problem java, multiple producer consumer problem, multiple producer multiple consumer problem, multiple producer multiple consumer, trade manage multiple accounts single mt4, convert multiple columns single column excel, using php design multiple choices quiz, multiple sites single cms registration, transpose convert multiple row single column excel, fork producer consumer buffer producer consumer problem, upload multiple files single file jsuploadjs, multiple png single, multiple png single image, php multiple png single large png, multiple images single png

Про роботодавця:
( 0 відгуки(-ів) ) United States

ID Проекту: #11780874

13 фрілансерів(-и) у середньому готові виконати цю роботу за $128


hi. I have a lot of experience in Semaphores and threads. I can easily complete your task. we can have a chat. thanks

$80 USD за 1 день
(265 відгуків(и))

Hi there, I would like to do this project if given the opportunity. Let me know if you are interested so I can have further details. Thanks.

$50 USD за 1 день
(441 відгуків(и))

I am very proficient in c and c++. I have 16 years c++ developing experience now, and have worked for more than 6 years. My work is online game developing, and mainly focus on server side, using c++ under linux environ Більше

$100 USD за 2 дні(-в)
(88 відгуків(и))
$211 USD за 3 дні(-в)
(70 відгуків(и))

Hello, I am expert in java/c/c++ and i can deliver your task in the least time and least payments. The code will be well commented and well formatted for better understanding. I believe in long term relations so first Більше

$100 USD за 2 дні(-в)
(70 відгуків(и))

Hello Sir I have a client form the states, last summer he had Operating Systems as his subject and I helped him in mostly all of his assignments.. i.e. scheduling problems, synchronization problems etc also the fina Більше

$222 USD за 3 дні(-в)
(13 відгуків(и))

I'm a PHD student in ECE specializing in embedded systems or distributed and concurrent systems. I'm also well experienced in posix api as well as Unix. I would be glad to help you on this. Here's a link to my github.c Більше

$155 USD за 3 дні(-в)
(7 відгуків(и))
$45 USD за 3 дні(-в)
(4 відгуків(и))

Over 2.5 years of experience in Verilog RTL Design, Microcontroller Projects and Algorithm Design in MATLAB in Industry and Academia. My past projects include: - PHY Layer Design on FPGA for Software Defined Radio P Більше

$50 USD за 3 дні(-в)
(2 відгуків(и))

i am software engineer with a degree in CS. since I had written programs like these during my engineering days I think I will be able to relate what you actually want out of this assignment. looking forward to work wi Більше

$188 USD за 2 дні(-в)
(2 відгуків(и))
$222 USD за 3 дні(-в)
(0 відгуків(и))

I [login to view URL] [login to view URL] u need?

$136 USD за 4 дні(-в)
(0 відгуків(и))

I am RTOS developer. I always write multithread, multiprocess application. I have many process, thread isolation code. This is so simple for me.

$111 USD за 2 дні(-в)
(0 відгуків(и))