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