代码中的并行线程

时间:2016-02-18 22:17:32

标签: c multithreading pthreads

我最近一直在学习线程,我正在尝试找出以下代码并行运行的最大线程数。

void thread_function2(void*) {
    arbitrary_function();
}

void thread_function1(void*) {
    pthread_t thread_info2;
    pthread_create(&thread_info, NULL, thread_function2, NULL);
    thread_function2(NULL);
    pthread_join(thread_info2, NULL);
}

int main(void) {
    pthread_t thread_info;
    pthread_create(&thread_info, NULL, thread_function1, NULL);
    thread_function1(NULL);
    pthread_join (thread_info, NULL);
}

到目前为止我想到的是主线程创建第一个线程,然后第一个线程创建第二个线程。我知道pthread_join会阻塞调用线程,直到指定的线程终止。在这种情况下,它是否意味着没有一个线程并行运行?有什么想法?

1 个答案:

答案 0 :(得分:1)

你还有更多。我们假设您的arbitrary_function需要相当长的时间才能执行。

第一个main()创建一个线程,你有两个。比第二个创建第三个,并等待它 - 你现在有3个。同时,main()继续,并直接运行thread_function1 - 这会创建另一个线程。所以这里有4个。这是一个最大数字,你不会有更多。