Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _GNU_SOURCE
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <sys/syscall.h>
- #include <pthread.h>
- #define THREAD_NUM 8
- #define CORE_NUM 3
- #define gettid() syscall(SYS_gettid)
- #define getpid() syscall(SYS_getpid)
- void check_func(void* idx_){
- int idx = (intptr_t)idx_;
- pid_t tid = gettid();
- pid_t pid = getpid();
- printf("idx = %d, pid = %d, tid = %d\n",idx,pid,tid);
- while(1){}
- }
- int main(){
- pthread_t threads[THREAD_NUM];
- pthread_attr_t attr;
- cpu_set_t cpuset[8];
- for(int i=0;i<THREAD_NUM;i++) CPU_ZERO(&cpuset[i]);
- for(int i=0;i<THREAD_NUM;i++) CPU_SET(i%CORE_NUM,&cpuset[i]);
- for(int i=0;i<THREAD_NUM;i++){
- pthread_attr_init(&attr);
- //pthread_attr_setaffinity_np(&attr,sizeof(cpu_set_t),&cpuset[i]);
- pthread_create(&threads[i],&attr,(void*)check_func,(void*)(intptr_t)i);
- }
- for(int i=0;i<THREAD_NUM;i++){
- pthread_join(threads[i],NULL);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement