【发布时间】:2020-11-03 16:34:58
【问题描述】:
我正在根据用户的需要添加线程。这意味着我标准输入,如果他想要新线程,我创建它。用户给线程指定特定的名称,所以我不能比他想要的更快地创建它。 我的部分代码:
while(read != EOF) {
if(user_wants_new_thread) {
worker_t *data = malloc(sizeof(worker_t));
data->name = malloc((strlen(arg1) + 1) * sizeof(char));
strcpy(data->name, arg1);
pthread_create(&thread, NULL, worker, (void *) data);
pthread_join(thread, NULL);
pthread_mutex_lock(&mutex);
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
}
}
线程应该无需等待即可开始工作。现在它等待工人功能的完成。 谢谢你的帮助:)
【问题讨论】:
-
在
pthread_create()之后立即调用pthread_join()几乎肯定是错误的。 -
如果调用pthread_join(),会一直卡住,直到线程结束。如果你想与线程的启动同步你应该使用 pthread_barrier_init(), pthread_barrier_wait()...
标签: c multithreading pthreads