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 1) { list p; for (p = 1; 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?

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

two questions 

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 1)
{
list p;
for (p= 1; p; p = p -> next)
if (p -> val > 0.0)
++global_positives;
}
Now consider the case in which thread A performs
count_positives (<list containing only negative values>);
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?
Transcribed Image Text: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 1) { list p; for (p= 1; p; p = p -> next) if (p -> val > 0.0) ++global_positives; } Now consider the case in which thread A performs count_positives (<list containing only negative values>); 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?
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Lists
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education