我最近一直在学习线程,我正在尝试找出以下代码并行运行的最大线程数。
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会阻塞调用线程,直到指定的线程终止。在这种情况下,它是否意味着没有一个线程并行运行?有什么想法?
答案 0 :(得分:1)
你还有更多。我们假设您的arbitrary_function
需要相当长的时间才能执行。
第一个main()创建一个线程,你有两个。比第二个创建第三个,并等待它 - 你现在有3个。同时,main()
继续,并直接运行thread_function1
- 这会创建另一个线程。所以这里有4个。这是一个最大数字,你不会有更多。