Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. #define _GNU_SOURCE
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <stdint.h>
  5. #include <sys/types.h>
  6. #include <unistd.h>
  7. #include <sys/syscall.h>
  8. #include <pthread.h>
  9.  
  10.  
  11. #define THREAD_NUM 8
  12. #define CORE_NUM 3
  13.  
  14. #define gettid() syscall(SYS_gettid)
  15. #define getpid() syscall(SYS_getpid)
  16.  
  17. void check_func(void* idx_){
  18. int idx = (intptr_t)idx_;
  19. pid_t tid = gettid();
  20. pid_t pid = getpid();
  21. printf("idx = %d, pid = %d, tid = %d\n",idx,pid,tid);
  22. while(1){}
  23. }
  24.  
  25. int main(){
  26. pthread_t threads[THREAD_NUM];
  27. pthread_attr_t attr;
  28. cpu_set_t cpuset[8];
  29.  
  30. for(int i=0;i<THREAD_NUM;i++) CPU_ZERO(&cpuset[i]);
  31. for(int i=0;i<THREAD_NUM;i++) CPU_SET(i%CORE_NUM,&cpuset[i]);
  32.  
  33. for(int i=0;i<THREAD_NUM;i++){
  34. pthread_attr_init(&attr);
  35. //pthread_attr_setaffinity_np(&attr,sizeof(cpu_set_t),&cpuset[i]);
  36. pthread_create(&threads[i],&attr,(void*)check_func,(void*)(intptr_t)i);
  37. }
  38. for(int i=0;i<THREAD_NUM;i++){
  39. pthread_join(threads[i],NULL);
  40. }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement