【问题标题】:How to add threads during run of program in C?如何在 C 程序运行期间添加线程?
【发布时间】: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


【解决方案1】:

是的,当我使用pthread_join(thread, NULL); 时,它会等到创建线程结束。所以有必要删除这一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    相关资源
    最近更新 更多