I need you to develop some software for me. I would like this software to be developed for Linux using C or C++. Topic 2: MULTITHREADED READER-WRITER PROBLEM
The goal of this project is to learn about synchronization techniques.
This project will simulate the synchronization problem of several Readers (each reader is run in a separate thread)
and Writers (each writer is run in a separate thread) accessing the same file (writers has to access the file
exclusively while readers can read the file simultaneously; if a writer is writing to the file, no other
reader/writer can access the file; if a reader is writing to the file, no other writer can access the file while
other readers can still access the file). Writers write data into the file and Readers read data from the file.
Between [1 and 9] Readers each reader waits a random time from [0 to 1000] milliseconds, and then tries to read an
integer from the file.
Between [1 and 9] Writers each writer waits a random time from [0 to 1000] milliseconds, they then ties to write an
randomly generated integer into the file.
Random numbers will be produced using the rand() function, which produces random integers between 0 and
The file can be created at the beginning with both read and write allowed, and 10 numbers should be written into the
You can solve this problem using either Pthreads or the Win32 API. For more description and
directions, please refer to the textbook(chapter 4).
In this project, you need to simulate the producer-consumer problem using three techniques out of the following:
o global variables,
o hardware instructions (Test-and-Set etc.),
o peterson's algorithm etc.
Compare these three synchroniation techniques and see if they are sufficient to solve this problem.
The simulator input includes three values:
How long to sleep before terminating
The number of reader threads
The number of writer threads
These three values should be read from the stdin.
For each read/write action, an output line has this EXACT structure:
Integer #val (written/read) by (Writer/Reader) (writer/reader number)
#val, #val, ..., #val
Write a 2-3 page paper describing your project, what problems you've faced and how you've overcome them.
In your opinion, what is the best synchronization technique for producer-consumer problem? What are
practical limitations on that technique?
Is there race condition in your solution? If these is, describe why you cannot solve race condition.
What to submit:
Submit your test data.
Submit ALL source code with detailed instructions on how and where to compile it, and how to make it run. You
should submit a Makefile to build your code under GCC/G++ (recommended), Java, or whatever language you use.
Note that Visual C++ also supports Makefiles, so if you use that, you can still export a makefile. I will test some of
the code to make sure the numbers are not imagined.
Submit your paper describing the project.
Submit a file named: [url removed, login to view] that describes what and where all the information is stored. (which file does
what, etc.). This is mostly so that I don't get lost in your project directory.
Note: All descriptions and text should be in TEXT format. Do NOT submit MS Word documents, etc. Everything
has to be readable without any special programs. (If something "has" to be formated, use PDF).
You may use any language you wish, but you need to document what language you're using and how to compile
code somewhere in your submission. Also comment your code! If I can't read it, it's wrong!
When submitting, you're very likely to have many files. You can compress them into a [url removed, login to view] or zip and submit that.
Tips: For many of you, this may be the first time to work on multithread programming. It helps to organize the code
from the start, to document everything, etc. Make the code readable (not just for you, but for me as well).
Modularize your code. Work on 1 thing at a time. Start by reading the input, producing producer threads and
consumer threads , writing the main function. Then implement semaphore synchronization technique, make sure that
works well, then implement another synchronization techinique, etc.
And most importantly: Organize and design the project and know what you're doing before you start coding. (and
don't wait until the last weekend to do it)
36 freelanceria on tarjonnut keskimäärin %project_bid_stats_avg_sub_26% %project_currencyDetails_sign_sub_27% tähän työhön
Hello Dear How are you? I have experience with c++ development for 6 years I can implement your idea. I will provide you good quality. Let's discuss in detail