gpt4 book ai didi

c - pthread_join 不等待线程完成

转载 作者:行者123 更新时间:2023-11-30 16:30:51 26 4
gpt4 key购买 nike

我在 Windows 上使用 pthreads.h 作为简单的光线跟踪器。主函数似乎没有等待线程完成。当我像这样运行程序时(我现在简化了它,只是测试线程,但它仍然给出错误):

typedef struct {
unsigned int id;
} Thread_Data;

void* render_band(void* arg) {
Thread_Data* data = (Thread_Data*)arg;
printf("This is thread number %d", data->id);
pthread_exit(0);
}

int main() {
pthread_t threads[NUM_THREADS];
Thread_Data data[NUM_THREADS];
for (int i = 0; i < NUM_THREADS; i++) {
data[i].id = id;

int rc = pthread_create(&threads[i], NULL, render_band, &data[i]);
if (rc) {
printf("[ERROR] From pthread_create: %d\n", rc);
}
}

for (int i = 0; i < NUM_THREADS; i++) {
int rc = pthread_join(threads[i], NULL);
if (rc) {
printf("[ERROR] From pthread_join: %d\n", rc);
}
}
}

图像不会完成,仅渲染几个像素。然而,当我添加 sleep 时,图像确实完成了。让我相信 pthread_join 不会等待,尽管文档是这么说的。我在这里缺少什么?

编辑:添加了错误检查,它为 pthread_join 返回错误代码 3。

最佳答案

很抱歉浪费了大家的时间。问题最终出在图书馆本身。当我在Windows上寻找pthreads.h时,我在sourceforge上找到了一些库。但显然 MinGW 已经有了 pthread 支持,它把一切搞乱了。所以遇到同样问题的人,就用MinGW自带的就可以了。

关于c - pthread_join 不等待线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50891949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com