![]() |
VOOZH | about |
Searching arrays with a large number of elements can be time-consuming as the program will check all the elements one by one, which may lead to delays and underutilization of the CPU, as only a single core will be used.
By using Multithreading, we can utilise multiple CPU cores, which can simultaneously search different chunks of the array, and greatly reduce the search time to provide faster results.
We can create a search function that will create multiple threads, and each thread will search a specific portion of the given array to find the target element. Once all of the threads finish their task, the search function will print the results.
In the main function the user will have to simply call the search function, and the multithreading feature will be implemented via that search function.
Step 1: Defining the main search function
The main search function that will be responsible for creating threads, defining the arguments for each thread and printing the results once all the threads finish their task.
The main search function will take 3 parameters:
Note: We will be passing the structure containing arguments by its value so that we can modify and use that same structure to pass arguments to the next thread and we do not have to create new structures for each thread.
Step 2: Defining the thread callable
The thread callable which are function that define the task which is to be performed by that thread. For this program the thread callable will search a specific chunk of the array and will modify the global variable (found) if the element is found.
Structure is used to pass multiple variables of to the function
In this step we set up the main function where we will define the array, the target element and call the search function on that array.
For this problem we are initialising the array with random values.
Output:
2 9 1 3 0 9 2 3 9 3
Enter Number to Search: 9
Element found at index: 5