Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <pthread.h>
  4. #include <time.h>
  5.  
  6. typedef struct _SearchParams {
  7. int target;
  8. int subArraySize;
  9. int* list;
  10. int totalSize;
  11. } SearchParams;
  12. int found = 0;
  13.  
  14. int currentThread = 0;
  15. int indx = -1;
  16.  
  17. void* search(void* args) {
  18. SearchParams* paramStruct = (SearchParams*) args;
  19. int target = paramStruct->target;
  20. int* list = paramStruct->list;
  21. int subArraySize = paramStruct->subArraySize;
  22. int totalSize = paramStruct->totalSize;
  23. int num = currentThread++;
  24. int i;
  25. for (i = num * subArraySize; i <= num * subArraySize + subArraySize - 1; i++) {
  26. if (list[i] == target) {
  27. found = 1;
  28. indx = i;
  29. pthread_exit(NULL);
  30. }
  31. if (i == totalSize - 1) {
  32. break;
  33. }
  34. }
  35. pthread_exit(NULL);
  36. }
  37.  
  38. int startSearch(int target, int* list, int size, int subArraySize, int timesRan) {
  39. int i;
  40. int numThreads = size / subArraySize;
  41. if(size % subArraySize == 0) {
  42. numThreads++;
  43. }
  44. SearchParams* parameters = (SearchParams*) malloc(sizeof(SearchParams));
  45. parameters->list = list;
  46. parameters->subArraySize = subArraySize;
  47. parameters->target = target;
  48. parameters->totalSize = size;
  49.  
  50. pthread_t thread[numThreads];
  51. for (i = 0; i < numThreads; i++) {
  52. pthread_create(&thread[i], NULL, search, (void*) parameters);
  53. }
  54.  
  55. for (i = 0; i < numThreads; i++) {
  56. pthread_join(thread[i], NULL);
  57. }
  58. free(parameters);
  59. return indx;
  60. }
  61.  
  62. // int main() {
  63. // int list[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
  64. // int indx = startSearch(5, list, 15, 5, 0);
  65. // printf("found at %d", indx);
  66. // }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement