Question: Consider the following code ( do not worry about the details of functions whose definitions are not provided to you - assume they do what

Consider the following code (do not worry about the details of functions whose definitions are not provided to you - assume they do what their name suggests and nothing more):

Consider the following code (do not worry about the details of functions

In order for this program to work correctly, condition variables need to be defined and appropriate wait & signal statements need to be added to the program.

Study the program and identify what comments on the left hand side match with what statements on the right hand side. Make sure that your answers reflect the meaning of condition variable names appropriately.

/* Definition of condition variable used in Action 1 below */

[ Choose ] num_items SZ num_items == 0 pthread_cond_wait(&buf_not_empty, &mutex); pthread_cond_wait(&buf_not_full, &mutex); pthread_cond_t buf_not_full = PTHREAD_COND_INITIALIZER; num_items 0 pthread_cond_signal(&buf_not_empty); num_items == SZ pthread_cond_t buf_not_empty = PTHREAD_COND_INITIALIZER;

/* Definition of condition variable used in Action 3 below */

[ Choose ] num_items SZ num_items == 0 pthread_cond_wait(&buf_not_empty, &mutex); pthread_cond_wait(&buf_not_full, &mutex); pthread_cond_t buf_not_full = PTHREAD_COND_INITIALIZER; num_items 0 pthread_cond_signal(&buf_not_empty); num_items == SZ pthread_cond_t buf_not_empty = PTHREAD_COND_INITIALIZER;

/* Condition 1 */

[ Choose ] num_items SZ num_items == 0 pthread_cond_wait(&buf_not_empty, &mutex); pthread_cond_wait(&buf_not_full, &mutex); pthread_cond_t buf_not_full = PTHREAD_COND_INITIALIZER; num_items 0 pthread_cond_signal(&buf_not_empty); num_items == SZ pthread_cond_t buf_not_empty = PTHREAD_COND_INITIALIZER;

/* Action 1 */

[ Choose ] num_items SZ num_items == 0 pthread_cond_wait(&buf_not_empty, &mutex); pthread_cond_wait(&buf_not_full, &mutex); pthread_cond_t buf_not_full = PTHREAD_COND_INITIALIZER; num_items 0 pthread_cond_signal(&buf_not_empty); num_items == SZ pthread_cond_t buf_not_empty = PTHREAD_COND_INITIALIZER;

/* Action 2 */

[ Choose ] num_items SZ num_items == 0 pthread_cond_wait(&buf_not_empty, &mutex); pthread_cond_wait(&buf_not_full, &mutex); pthread_cond_t buf_not_full = PTHREAD_COND_INITIALIZER; num_items 0 pthread_cond_signal(&buf_not_empty); num_items == SZ pthread_cond_t buf_not_empty = PTHREAD_COND_INITIALIZER;

/* Condition 2 */

[ Choose ] num_items SZ num_items == 0 pthread_cond_wait(&buf_not_empty, &mutex); pthread_cond_wait(&buf_not_full, &mutex); pthread_cond_t buf_not_full = PTHREAD_COND_INITIALIZER; num_items 0 pthread_cond_signal(&buf_not_empty); num_items == SZ pthread_cond_t buf_not_empty = PTHREAD_COND_INITIALIZER;

/* Action 3 */

[ Choose ] num_items SZ num_items == 0 pthread_cond_wait(&buf_not_empty, &mutex); pthread_cond_wait(&buf_not_full, &mutex); pthread_cond_t buf_not_full = PTHREAD_COND_INITIALIZER; num_items 0 pthread_cond_signal(&buf_not_empty); num_items == SZ pthread_cond_t buf_not_empty = PTHREAD_COND_INITIALIZER;

/* Action 4 */

[ Choose ] num_items SZ num_items == 0 pthread_cond_wait(&buf_not_empty, &mutex); pthread_cond_wait(&buf_not_full, &mutex); pthread_cond_t buf_not_full = PTHREAD_COND_INITIALIZER; num_items 0 pthread_cond_signal(&buf_not_empty); num_items == SZ pthread_cond_t buf_not_empty = PTHREAD_COND_INITIALIZER;

PreviousNext

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!