使用pthread_create()创建超过1000个线程

时间:2012-11-02 07:13:53

标签: c++ posix

我正在尝试使用pthread_create()函数创建1000个线程。

这是我正在使用的声明:

for (int i=0 ; i <1000; i++)
{
   retValue = pthread_create(&threadId, NULL, simplethreadFunction, NULL);
}

每次这个for循环运行都会创建一个新线程吗?

这很简单。但是我无法理解它。

1 个答案:

答案 0 :(得分:4)

  

每次这个for循环运行都会创建一个新线程吗?

是的,确实如此。

  

这很简单。但是我无法理解它。

我还要补充几点:

  1. 函数pthread_create的第一个参数是pthread_t的指针类型。基本上你将一个地址传递给这个函数,这个函数用来分配'某事'。

    当此函数创建一个线程时,会创建此线程的“不透明的唯一标识符”,并且您传递的指针将指向此位置,以便您可以在以后访问它(如果需要)。

  2. 如果你将1000次传递相同的指针,你将只能访问所有1000个中创建的一个(最后一个)线程的唯一标识符,因为每次前一个值都将被克服写入。

  3. 如果您想在线程上执行进一步操作(如加入等),则需要此唯一值。

  4. 有关此功能和其他线程相关功能的详细信息,您可以访问thisthis

  5. 不要忘记在主上下文中调用pthread_exit,否则完成程序(包括创建的线程)可能会在所有线程完成之前终止。

  6. 另外关于时间,这个东西可能对创建时间没有任何影响,据我所知,只会降低你创建的线程的可用性。此外,这次你计算的不是创建1000个线程的时间,将取决于很多其他因素,如平台/实现等。