我正在尝试使用 pthread_create()
函数创建 1000 个线程。
这是我正在使用的声明:
for (int i=0 ; i <1000; i++)
{
retValue = pthread_create(&threadId, NULL, simplethreadFunction, NULL);
}
每次运行这个 for 循环时,它都会创建一个新线程吗?
这是一件简单的事情。但我无法理解。
最佳答案
Everytime this for-loop runs does it create a new thread?
是的,确实如此。
This is a simple thing. But I'm unable to understand it.
我再补充几点:
函数 pthread_create 的第一个参数是指向 pthread_t 的指针类型。基本上,您将一个地址传递给该函数,该函数使用该地址来分配“某些内容”。
当此函数创建线程时,会为该线程创建一个“不透明的唯一标识符”,并且您传递的指针将指向此位置,以便您稍后可以在需要时访问它。
如果您将传递同一个指针 1000 次,您将只能访问 1000 个线程中创建的一个(最后一个)线程的唯一标识符,因为每次前一个值都会超过写的。
如果您想在线程上执行进一步操作(例如加入等),则需要此唯一值。
不要忘记在主上下文中调用 pthread_exit,否则整个程序(包括创建的线程)可能会在所有线程完成之前终止。
另外关于时间,据我认为,这件事可能不会对创建时间产生任何影响,只会降低您创建的线程的可用性。另外,这次您计算的时间不是创建 1000 个线程的时间,将取决于许多其他因素,例如平台/实现等。
关于c++ - 使用 pthread_create() 创建超过 1000 个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13190910/