Question: in C PLEASE INCLUDE CODE In this project, you are asked to write a program which uses three threads to concurrently compute the sum of

in C PLEASE INCLUDE CODEin C PLEASE INCLUDE CODE In this project, you are asked to

In this project, you are asked to write a program which uses three threads to concurrently compute the sum of square roots from 1 to n, where n is a multiple of 3 and is specified in command line. The program gets the value n from the command line argument (using argc /argv) and converts it to an integer. Next, it creates two threads using pthread _create0. Then, the main thread computes the sum of square roots from 1 to n/3, while the two child threads compute the sum of the square roots from n/3+1 to 2n/3 and 2n/3+1 to n, respectively, at the same time as main thread's calculation. All three partial sums should be added together to a shared global variable by each thread at the end of execution. The main thread calls pthread_join) to wait for the termination of the two child threads and then prints the result. Below is an example of running your thread program: spirit thr 9999 sum of square roots: 666616.459197 u need to think about the location in program execution to call thread creation / mutex locking tc carefully. Be sure that three threads do calculation concurrently, no excessive mutex locking which creates unnecessary overhead, and is inefficient. Use mutex when necessary to avoid race conditions which cause your program to produce incorrect answers randomly. Programs which fail to do s assume the input is always valid and would not cause overflows if you use standard data types (such as int and doubles). You do not need to handle errors. o will receive partial credit only even if the result is (sometimes) correct. You can In this project, you are asked to write a program which uses three threads to concurrently compute the sum of square roots from 1 to n, where n is a multiple of 3 and is specified in command line. The program gets the value n from the command line argument (using argc /argv) and converts it to an integer. Next, it creates two threads using pthread _create0. Then, the main thread computes the sum of square roots from 1 to n/3, while the two child threads compute the sum of the square roots from n/3+1 to 2n/3 and 2n/3+1 to n, respectively, at the same time as main thread's calculation. All three partial sums should be added together to a shared global variable by each thread at the end of execution. The main thread calls pthread_join) to wait for the termination of the two child threads and then prints the result. Below is an example of running your thread program: spirit thr 9999 sum of square roots: 666616.459197 u need to think about the location in program execution to call thread creation / mutex locking tc carefully. Be sure that three threads do calculation concurrently, no excessive mutex locking which creates unnecessary overhead, and is inefficient. Use mutex when necessary to avoid race conditions which cause your program to produce incorrect answers randomly. Programs which fail to do s assume the input is always valid and would not cause overflows if you use standard data types (such as int and doubles). You do not need to handle errors. o will receive partial credit only even if the result is (sometimes) correct. You can

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!