线程入口点 method/function 的目的是什么?

What is the purpose of the thread entry point method/function?

创建线程时我们传递一个入口点method/function,为什么要有这个方法,它的作用是什么?

线程必须从某个地方开始。 pthread 接口要求您提供形式为

的函数
void *start_thread( void *arg );
使用

void * 是因为它们可以指代任何东西。

创建线程时,调用提供的函数作为线程的起点。可以将其视为线程的 main(),但具有不同的参数和 return 类型。

OS 需要知道新的执行线程从哪里开始。在使用高级编程语言时,并不指定要在新线程上下文中执行的机器指令在内存中的地址,而是使用语言中定义的函数或方法等执行单元。如果线程创建像 fork 一样工作并且新线程的执行在 fork 调用点开始,那么两个线程将具有通常驻留在堆栈中的相同局部变量。即使有为新线程创建的堆栈副本,两个线程在离开范围时也会 运行 相同的清理代码(例如,在 C++ 中,智能指针将被释放两次)。因此,当您为新线程指定起点时,您确定它会分配自己的堆栈帧,并且函数的结尾不会执行两次。