函数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()函数中,首先初始化线程属性,然后创建一个新线程,并将线程属性与线程函数关联。最后等待线程结束并释放线程资源。

运行示例代码,你将看到输出显示了线程允许运行的处理器核心

linux cc++函数pthread_attr_getaffinity_np 怎么使用给出例子

原文地址: https://www.cveoy.top/t/topic/iYLl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录