如何在 C 程序 运行 期间添加线程?
How to add threads during run of program in C?
我正在根据用户需要添加线程。这意味着我 stdin 如果他想要新线程我创建它。用户给线程指定了特定的名称,所以我不能比他想要的更快地创建它。
我的部分代码:
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);
}
}
线程无需等待即可开始工作。现在它等待 worker 函数的完成。
谢谢你的帮助:)
是的,当我使用 pthread_join(thread, NULL);
时,它会等到创建的线程结束。所以删除这一行是很有必要的。
我正在根据用户需要添加线程。这意味着我 stdin 如果他想要新线程我创建它。用户给线程指定了特定的名称,所以我不能比他想要的更快地创建它。 我的部分代码:
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);
}
}
线程无需等待即可开始工作。现在它等待 worker 函数的完成。 谢谢你的帮助:)
是的,当我使用 pthread_join(thread, NULL);
时,它会等到创建的线程结束。所以删除这一行是很有必要的。