我正在尝试使用该pthread_create()
函数创建 1000 个线程。
这是我正在使用的语句:
for (int i=0 ; i <1000; i++)
{
retValue = pthread_create(&threadId, NULL, simplethreadFunction, NULL);
}
每次这个 for 循环运行时,它会创建一个新线程吗?
这是一件简单的事情。但我无法理解。
每次这个 for 循环运行时,它会创建一个新线程吗?
是的,它确实。
这是一件简单的事情。但我无法理解。
我再补充几点:
函数 pthread_create 的第一个参数是指向 pthread_t 的指针类型。基本上,您将一个地址传递给该函数,该函数用于分配“某物”。
当这个函数创建一个线程时,会为这个线程创建一个“不透明的唯一标识符”,并让您传递的指针指向这个位置,以便您以后可以在需要时访问它。
如果您将所有 1000 次传递相同的指针,您将只能访问所有 1000 个线程中创建的一个(最后一个)线程的唯一标识符,因为每次前一个值都会被覆盖。
如果您想在线程上执行进一步的操作(如加入等),则需要此唯一值。
不要忘记在你的主上下文中调用 pthread_exit ,否则完整的程序(包括创建的线程)可能会在所有线程完成之前终止。
同样关于时间,据我所知,这件事可能对创建时间没有任何影响,只会降低您创建的线程的可用性。此外,您计算的这个时间不是创建 1000 个线程的时间,这将取决于许多其他因素,如平台/实现等。