如何将 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/

10-11 19:42