Problem 3. (Note: If any part of your answer comes from an AI system, you must cite the system you use and tell what the prompt was.) POSIX threads provides another useful synchro- nization mechanism, called a condition variable. Condition variables provide a solution for the same race condition we saw with processes sending signals to each other in the "ping-pong" example shown in lecture Wednesday 8 November. (See the code for that example, particularly the use of sigprocmask() and sigsuspend() in the await_event () function. The basic problem is how to keep notification that a condition has become true from arriving between the time a thread checks the condition (and finds it false) and the time it suspends execution. a. Read the man page for pthread_cond_wait (), focusing on the "DESCRIPTION" section. (Ignore timed waits and everything about "robust" mutexes.) What are the arguments to this function? b. What is the important precondition for pthread_cond_wait()? In other words, what must be true when a thread calls this function, or else undefined behavior results? c. Read the man page for pthread_cond_broadcast() (and pthread_cond_signal()). Does a thread need to hold a mutex lock when it calls signal or broadcast on the condition variable?

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

the following questions can be done without a textbook, short answer questions

Problem 3. (Note: If any part of your answer comes from an AI system, you must cite the
system you use and tell what the prompt was.) POSIX threads provides another useful synchro-
nization mechanism, called a condition variable. Condition variables provide a solution for the same
race condition we saw with processes sending signals to each other in the "ping-pong" example
shown in lecture Wednesday 8 November. (See the code for that example, particularly the use of
sigprocmask() and sigsuspend() in the await_event () function.
The basic problem is how to keep notification that a condition has become true from arriving between
the time a thread checks the condition (and finds it false) and the time it suspends execution.
a. Read the man page for pthread_cond_wait (), focusing on the "DESCRIPTION" section.
(Ignore timed waits and everything about "robust" mutexes.) What are the arguments to this
function?
b. What is the important precondition for pthread_cond_wait()? In other words, what must
be true when a thread calls this function, or else undefined behavior results?
c. Read the man page for pthread_cond_broadcast() (and pthread_cond_signal()). Does a
thread need to hold a mutex lock when it calls signal or broadcast on the condition variable?
d. Here is code for a thread waiting on a condition, which will be established by another thread.
Assume mtx is a pthread_mutex_t and cv is a pthread_cond_t, and that both have been
initialized.
...// 1
while (count != target)
...// 2
Replace the...'s with calls to the appropriate functions (see previous parts), passing the
appropriate arguments (i.e., pointers to mtx and cv).
e. Here is code for the above thread's counterpart, which will make the condition true:
if (++count == target)
...// 3
Replace the indicated section with the appropriate call as described in the man page.
Transcribed Image Text:Problem 3. (Note: If any part of your answer comes from an AI system, you must cite the system you use and tell what the prompt was.) POSIX threads provides another useful synchro- nization mechanism, called a condition variable. Condition variables provide a solution for the same race condition we saw with processes sending signals to each other in the "ping-pong" example shown in lecture Wednesday 8 November. (See the code for that example, particularly the use of sigprocmask() and sigsuspend() in the await_event () function. The basic problem is how to keep notification that a condition has become true from arriving between the time a thread checks the condition (and finds it false) and the time it suspends execution. a. Read the man page for pthread_cond_wait (), focusing on the "DESCRIPTION" section. (Ignore timed waits and everything about "robust" mutexes.) What are the arguments to this function? b. What is the important precondition for pthread_cond_wait()? In other words, what must be true when a thread calls this function, or else undefined behavior results? c. Read the man page for pthread_cond_broadcast() (and pthread_cond_signal()). Does a thread need to hold a mutex lock when it calls signal or broadcast on the condition variable? d. Here is code for a thread waiting on a condition, which will be established by another thread. Assume mtx is a pthread_mutex_t and cv is a pthread_cond_t, and that both have been initialized. ...// 1 while (count != target) ...// 2 Replace the...'s with calls to the appropriate functions (see previous parts), passing the appropriate arguments (i.e., pointers to mtx and cv). e. Here is code for the above thread's counterpart, which will make the condition true: if (++count == target) ...// 3 Replace the indicated section with the appropriate call as described in the man page.
Expert Solution
steps

Step by step

Solved in 5 steps

Blurred answer
Knowledge Booster
Race Condition
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.
Similar questions
  • SEE MORE QUESTIONS
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