c - 如何将 pthread_t id 保存到数组

标签 c pthreads

如何将 p_thread 的 id 保存到数组中?

int i;
pthread_t t[N];
float arrayId[N];


for (i = 0; i < N; i++) {
    pthread_create(&t[i], NULL, f, (void *) &i);
    printf("creato il thread id=%lu\n", t[i]);
    arrayId[i] = t[i];
    printf("a[%d]=%f\n", i, arrayId[i]);
}

我可以打印,但我无法保存...

我必须对这个数组进行排序,然后我必须首先执行按 id 排序的所有线程

最佳答案

所有线程将收到相同的值 i因为您是按值传递它(相同的地址)。
这应该解决它:

int i;
pthread_t t[N];
float arrayId[N];

int indexes[N];

for (i = 0; i < N; i++) {
    indexes[i] = i;
    pthread_create(&t[i], NULL, f, (void *) &indexes[i]);
    printf("creato il thread id=%lu\n", t[i]);
    arrayId[i] = t[i];
    printf("a[%d]=%f\n", i, arrayId[i]);
}

关于c - 如何将 pthread_t id 保存到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155055/

相关文章:

c - Ubuntu C 编程预期为浮点型,但参数为 double * 类型

c - 如何在linux c程序中获取pthread的线程ID?

c - memcpy 和 memset 与分配和初始化的历史

检查 `read` 是否会在不消耗任何数据的情况下返回 EOF

c - 使用互斥体和 Pthread 库的错误输出

c - 使用管道的 C 多线程聊天程序

c - 如何使用 pthread_cancel 避免内存泄漏?

c - 线程同步问题: possible race, 滥用volatile,缓存一致性?

c - STM32上指定位置沿数组的有效位计算

c - 需要帮助解析 .csv 文件 C 中的数据