Answer:
// Producer Thread
void *producer(void *param) {
buffer_item item;
while (true) {
item = rand() % 100;
sem_wait(&empty);
pthread_mutex_lock(&mutex);
if (insert_item(item))
printf("Can't insert item\n");
else
printf("Producer %d: produced %d\n", *((int*)param), item);
pthread_mutex_unlock(&mutex);
sem_post(&full);
}
}
// Consumer Thread
void *consumer(void *param) {
while (true) {
buffer_item item = NULL;
if (in > 0)
item = buffer[in - 1];
sem_wait(&full);
pthread_mutex_lock(&mutex);
if (remove_item(&item))
printf("Can't remove item\n");
else
printf("Consumer %d: consumed %d\n", *((int*)param), item);
pthread_mutex_unlock(&mutex);
sem_post(&empty);
}
}
Explanation:
An outline of the producer and consumer threads appears as shown above.
C
.............
When hard disk drives became standard in most PCs in the later 1980s, since the first two letters were already commonly used for these floppy drives, they logically labeled the third storage device “C”, even though it now tended to be the main storage medium for the computer, including usually containing the operating system.
<span>What guidelines should you follow when adding tables or spreadsheets to your presentations?
a. Limit the number of columns to four.
b. Make them large enough so they can be seen by your audience.
c. Use a small font size (10-point or less) so all of your information fits on the slide.
d. Use at least eight rows.
e. Use column and row headers that are appropriate and descriptive.</span>
A, B, E are the answers. I know this is a different script but should help you if need be.
Simulation predicts possible problems before they occur