Provide a well-researched and technically accurate answer for each question below: 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 material. Synthesize several sources to make your point and reference those sources so it is clear to other students how you drew your conclusions.
· 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.