使用pthread_create()创建1000多个线程

creating more than 1000 threads using pthread_create()

本文关键字:1000 线程 创建 pthread create 使用      更新时间:2023-10-16

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

这是我正在使用的语句:

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

每次运行此循环是否会创建一个新线程?

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

每次运行此循环是否会创建一个新线程?

是的。

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

我会添加一些点:

  1. 函数pthread_create的第一个参数是指向pthread_t的指针类型。基本上,您将此函数传递给此功能的地址,该功能用于分配"某物"。

    当此功能创建一个线程时,为此线程创建了一个"不透明的,唯一的标识符",并将您传递的指针指向此位置,以便您以后(如果需要)访问它。

  2. 如果您将通过相同的指针将所有1000次传递,则只能使用一个(最后一个)线程访问所有1000的唯一标识符,因为每次上一个值时,写。

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

  4. 有关此功能和其他线程相关功能的详细信息,您可以使用此功能。

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

在时间上,就我认为的时间而言,这东西可能不会对创建时间产生任何影响,只会降低您创建的线程的可用性。另外,这次您正在计算不是创建1000个线程的时间,而是取决于许多其他因素,例如平台/实现等。