Problem

Many current language specifications, such as for C and C++, are inadequate for multithrea...

Many current language specifications, such as for C and C++, are inadequate for multithreaded programs. This can have an impact on compilers and the correctness of code, as this problem illustrates. Consider the following declarations and function definition:

int global_positives = 0;

typedef struct list {

struct list *next;

double val;

} * list;

void count_positives(list l)

{

list p;

for (p = l; p; p = p -> next)

if (p -> val > 0.0)

++global_positives;

}

Now consider the case in which thread A performs

count_positives();

while thread B performs

++global_positives;

a. What does the function do?

b. The C language only addresses single-threaded execution. Does the use of two parallel threads create any problems or potential problems?

Step-by-Step Solution

Request Professional Solution

Request Solution!

We need at least 10 more requests to produce the solution.

0 / 10 have requested this problem solution

The more requests, the faster the answer.

Request! (Login Required)


All students who have requested the solution will be notified once they are available.
Add your Solution
Textbook Solutions and Answers Search
Solutions For Problems in Chapter 4