linux cc++函数pthread_attr_getaffinity_np 怎么使用给出例子
函数pthread_attr_getaffinity_np()用于获取线程的亲和性(affinity)属性。亲和性属性指定了线程可以运行的处理器核心的集合。
以下是pthread_attr_getaffinity_np()函数的使用示例:
#include <stdio.h>
#include <pthread.h>
void* thread_function(void* arg) {
// 获取线程 ID
pthread_t thread_id = pthread_self();
// 获取线程亲和性属性
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
int result = pthread_getaffinity_np(thread_id, sizeof(cpu_set_t), &cpuset);
if (result != 0) {
printf("Failed to get thread affinity.\n");
return NULL;
}
// 遍历处理器核心集合
for (int i = 0; i < CPU_SETSIZE; i++) {
if (CPU_ISSET(i, &cpuset)) {
printf("Thread %lu is allowed to run on CPU %d\n", thread_id, i);
}
}
return NULL;
}
int main() {
pthread_t thread;
pthread_attr_t attr;
// 初始化线程属性
pthread_attr_init(&attr);
// 创建线程
int result = pthread_create(&thread, &attr, thread_function, NULL);
if (result != 0) {
printf("Failed to create thread.\n");
return 1;
}
// 等待线程结束
pthread_join(thread, NULL);
return 0;
}
在上面的示例中,首先定义了一个线程函数thread_function(),该函数通过调用pthread_getaffinity_np()获取自身线程的亲和性属性,并打印出允许运行的处理器核心。
在main()函数中,首先初始化线程属性,然后创建一个新线程,并将线程属性与线程函数关联。最后等待线程结束并释放线程资源。
运行示例代码,你将看到输出显示了线程允许运行的处理器核心
原文地址: https://www.cveoy.top/t/topic/iYLl 著作权归作者所有。请勿转载和采集!