mirror of
https://hub.njuu.cf/TheAlgorithms/C-Plus-Plus.git
synced 2023-10-11 13:05:55 +08:00
41 lines
1000 B
C
41 lines
1000 B
C
#include <stdio.h>
|
|
#include <windows.h>
|
|
#include <process.h>
|
|
|
|
void routine(void *a)
|
|
{
|
|
int n = *(int *) a; // typecasting from void to int
|
|
|
|
// Sleeping time is proportional to the number
|
|
// More precisely this thread sleep for 'n' milliseconds
|
|
Sleep(n);
|
|
|
|
// After the sleep, print the number
|
|
printf("%d ", n);
|
|
|
|
void sleepSort(int arr[], int n)
|
|
{
|
|
// An array of threads, one for each of the elements
|
|
// in the input array
|
|
HANDLE threads[n];
|
|
|
|
// Create the threads for each of the input array elements
|
|
for (int i = 0; i < n; i++)
|
|
threads[i] = (HANDLE)_beginthread(&routine, 0, &arr[i]);
|
|
|
|
// Process these threads
|
|
WaitForMultipleObjects(n, threads, TRUE, INFINITE);
|
|
return;
|
|
}
|
|
|
|
// Driver program to test above functions
|
|
int main()
|
|
{
|
|
// Doesn't work for negative numbers
|
|
int arr[] = {34, 23, 122, 9};
|
|
int n = sizeof(arr) / sizeof(arr[0]);
|
|
|
|
sleepSort (arr, n);
|
|
|
|
return(0);
|
|
} |