Advertisement
HimikoWerckmeister

Untitled

Mar 5th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. #define _GNU_SOURCE
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <pthread.h>
  5. #include <time.h>
  6.  
  7. #define DATA_SIZE ((int) 100)
  8. #define NUM_THREADS ((int) 40)
  9. #define NUM_SWAPS ((int) 2000000)
  10.  
  11. int data[DATA_SIZE];
  12.  
  13. void swap(int *a, int *b)
  14. {
  15. int temp;
  16. temp = *a;
  17. *a = *b;
  18. *b = temp;
  19.  
  20. }
  21.  
  22. void ZeroInit()
  23. {
  24. for(int i=0;i<DATA_SIZE;i++)
  25. {
  26. data[i]=0;
  27. }
  28. }
  29.  
  30. void* A(void *arg)
  31. {
  32. int *limitptr = (int*)arg;
  33. int limit=*limitptr;
  34. int idx1=0;
  35. int idx2=0;
  36. //srand(time(NULL));
  37. for(int i=0;i<limit;i++)
  38. {
  39. idx1= rand()%NUM_THREADS;
  40. idx2= rand()%NUM_THREADS;
  41. swap(&data[idx1],&data[idx2]);
  42. }
  43. //return 0;
  44. pthread_exit(0);
  45. }
  46.  
  47.  
  48.  
  49. void SpawnThreads(unsigned int n)
  50. {
  51.  
  52. int iNumThreads = n;
  53. int ret=-1;
  54. int ii=NUM_THREADS;
  55. pthread_t *threadArray=malloc(sizeof(pthread_t)*iNumThreads);
  56. for(int i=0;i<iNumThreads;i++)
  57. {
  58. ret=pthread_create(&threadArray[i],NULL,A,&ii);
  59. if(ret != 0)
  60. {
  61. printf("Pthread error");
  62. }
  63. pthread_join(threadArray[i],NULL);
  64. }
  65. }
  66.  
  67. int main(int argc, char **argv)
  68. {
  69.  
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement