Choose two of the three questions below and provide a well-researched and technically accurate answer.
- Question 1: Explain why choosing a multi-threaded approach is more scalable as compared to a multi-process approach. Describe how threads or processes share data between them.
- Question 2: Assuming a computer has a single processor and a single core with no support for parallel execution, explain why running a multi-threaded program would show no performance improvement. Would inter-process communication be relevant in such a context?
- Question 3: The thread example in the course textbook on page 108 says, â€œThe order in which the various messages are interleaved is nondeterminate and may vary on consecutive runs of the program.â€ Dr. Tanenbaum is in effect saying the program has a built-in race condition. Explain why the addition of pthread_join(thread[i], NULL) after the status check inside the for() loop solves the race condition.
In your initial post, be sure to provide technical details supported by credible sources. You want to demonstrate that you have developed insights from your reading and are not simply restating the textbook material. Synthesize several sources to make your point and reference those sources so it is clear to other students how you drew your conclusions.
In your response posts to two of your peers, identify at least one alternative to their original post. For example, if the original post made by student [A] identified solution [X], a response should identify an alternative to [X] in the form of [Y] or [Z]. So, if the original post addresses Question 1 regarding how multi-threading is more scalable than a multi-process approach, a response should identify some of the drawbacks of multi-threading, or conversely, some of the benefits of multi-processing.
To complete this assignment, review the Discussion Rubric document.