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