Question

In: Computer Science

Write a C++ program where you implement a synchronized multithreaded version of HAPPY with four threads....

  1. Write a C++ program where you implement a synchronized multithreaded version of HAPPY with four threads. The program will take in an array from 1 to n (n = 50) and will be passed to four different threads:

If the current number is divisible by 2, then print HAP

If the current number is divisible by 5, then print PY

If the current number is divisible by both 2 and 5, then print HAPPY

If the number is neither divisible by 2 nor 5, then print the number

  • Thread 1 should call csu() to check if divisible by 2 then print HAP.
  • Thread 2 should call sb() to check if divisible by 5 then print PY.
  • Thread 3 should call csusb() to check if divisible by 2 and 5 then output HAPPY
  • Thread 4 should call number() which should only print the numbers.

Example: 1 HAP 3 HAP PY HAP 7 HAP 9 HAPPY 11 HAP 13            HAP PY HAP 17        HAP 19        HAPPY …

Solutions

Expert Solution

#include <iostream> 
#include <thread> 
using namespace std; 
  
// function that will be called by thread first
// it will return HAP if number is divisible by 2
void csu(int value)
{
    if(value%2==0)
    {
        cout<<"HAP";
    }
}
// function that will be called by thread second
// it will return PY if number is divisible by 5
void sb(int value)
{
    if(value%5==0)
    {
        cout<<"PY";
    }
}
// function that will be called by thread third
// it will return HAPPY if number is divisible by 2 as well as 5
void csusb(int value)
{
    if(value%2==0 && value%5==0)
    {
        cout<<"HAPPY";
    }
}
// function that will be called by thread fourth
// it will return a random number between 1-100 if number is neither divisible by 2 nor by 5
void number(int value)
{
    if(value%2!=0 && value%5!=0)
    {
        cout<<(1+rand()%99);
    }
}
  
// main method
int main() 
{ 
    int values[50]; // array of 50 elements
    // loop to store 50 numbers generated randomly using rand() 
    // if you don't want to generate random numbers you can take input from user using cin>>values[i];
    for (int i=0;i<50;i++)
    {
        values[i]=1+rand()%99;// numbers generated will be between 1-100
    }
    // loop to call thread for every element of array
    for(int i=0;i<50;i++)
    {
        thread first (csu,values[i]);   // will call csu(values[i])  
        thread second (sb,values[i]);   // will call sb(values[i])
        thread third (csusb,values[i]); // will call csusb(values[i])
        thread fourth (number,values[i]);   // will call number(values[i])
        first.join();// wait for thread first to finish
        second.join();// wait for thread second to finish
        third.join();// wait for thread third to finish
        fourth.join();// wait for thread fourth to finish
    }
    return 0; 
}

Related Solutions

C Programming Question: Q) Write a C - program to implement an Uprooted version (Save to...
C Programming Question: Q) Write a C - program to implement an Uprooted version (Save to parent pointer instead of child pointer, ie. parent of top is null) of Kruskal's Minimum Spanning Tree with adjacency list and min-heap as the additional data structure. Note: Please implement it in C and also keep the above conditions in mind. You can take your time. Thank you.
write C program to create 4 threads for summing the numbers between 1 and 40 where...
write C program to create 4 threads for summing the numbers between 1 and 40 where the first thread computes the sum between 1 and 10; the second thread computes the sum between 11 and 20; the third thread computes the sum between 21 and 30; and the fourth thread compute the sum between 31 and 40. The output should be similar to the following. The sum from 1 to 10 = 55 The sum from 11 to 20 =...
Write a program (in C, or Java, or C++, or C#) that creates three new threads...
Write a program (in C, or Java, or C++, or C#) that creates three new threads (besides the already existing main thread) and synchronizes them in such a way that each thread displays it's thread id in turn for 5 iterations. The output of the program should look like this: Thread 1 - iteration no. 1 Thread 2 - iteration no. 1 Thread 3 - iteration no. 1 Thread 1 - iteration no. 2 Thread 2 - iteration no. 2...
For this computer assignment, you are to write a C++ program to implement a class for...
For this computer assignment, you are to write a C++ program to implement a class for binary trees. To deal with variety of data types, implement this class as a template. Most of the public member functions of the BinaryTree class call private member functions of the class (with the same name). These private member functions can be implemented as either recursive or non-recursive, but clearly, recursive versions of these functions are preferable because of their short and simple implementations...
IN C LANGUAGE: Write a multi-threaded Linux program that synchronizes it's threads to write to a...
IN C LANGUAGE: Write a multi-threaded Linux program that synchronizes it's threads to write to a file without the file becoming corrupted. To do this, your program will create three threads which write strings to the same file. Each thread will randomly write a selection of strings to the file at random intervals. When finished, the file will contain all the strings written correctly to the file. You may use mutexes, semaphores, or a monitor your write on your own....
Program this in C thank you PROBLEM DESCRIPTION: Write a program to implement the following requirement:...
Program this in C thank you PROBLEM DESCRIPTION: Write a program to implement the following requirement: The program will read from standard input two things - a string str1 on the first line of stdin (this string may be an empty string) - a string str2 on the second line of stdin (this string may be an empty string) Note that stdin does not end with '\n'. The program will output a string that is the concatenation of string str1...
you will create a program with Java to implement a simplified version of RSA cryptosystems. To...
you will create a program with Java to implement a simplified version of RSA cryptosystems. To complete this project, you may follow the steps listed below (demonstrated in Java code) to guide yourself through the difficulties. Step I Key-gen: distinguish a prime number (20 pts) The generation of RSA's public/private keys depends on finding two large prime numbers, thus our program should be able to tell if a given number is a prime number or not. For simplicity, we define...
Write a C program that creates 5 threads sends the thread index as an argument to...
Write a C program that creates 5 threads sends the thread index as an argument to the thread execution procedure/function. Also, the main process/thread joins the newly created threads sequentially one after the other. From the thread procedure print “I am a thread and my index is “ [print the correct index number]. From the main thread after the join print “I am the main thread and just completed joining thread index “ [print the correct index].
Write a modified version of the program below. In this version, you will dynamically allocate memory...
Write a modified version of the program below. In this version, you will dynamically allocate memory for the new C-string and old C-string, using the new keyword. Your program should ask the user for the size of the C-string to be entered, and ask the user for the C-string, then use new to create the two pointers (C-strings).   Then, call Reverse, as before. Don’t forget to use delete at the end of your program to free the memory! #include <iostream>...
Write a program to implement and analyzing the Bubble Sort. a. Write a C++ function for...
Write a program to implement and analyzing the Bubble Sort. a. Write a C++ function for Bubble Sort b. Use a dynamic array of integers in a variable size of n. c. Display the following information: 1) Total counts of comparisons 2) Total counts of shifts / moves / swaps, whichever applies d. Write a main() function to test a best, and an average cases in terms of time efficiency i. Fill out the array with random numbers for an...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT