【发布时间】:2011-01-12 08:42:42
【问题描述】:
我有一个类成员函数A,它创建一个线程来运行另一个函数B。 FunctionB 将执行一些操作并在一段时间后停止(这是一种触发并忘记函数调用,所需的 functionA 调用和线程数将取决于运行时结果)。 FunctionA 将被多次调用。我意识到 pthread_create 将 pthread_t 作为第一个参数,并且 pthread_t 在创建线程时必须可用。所以,我不能像下面这样声明它是本地的。那么我在哪里可以声明 pthread_t?
void classA::functionA(int param)
{
pthread_t t; //could not declare local because functionA might return and destroy t before thread being created.
pthread_create(&t , NULL, functionB, param);
}
void functionB(int param)
{
}
【问题讨论】:
-
即使
t被销毁,对functionB的执行有何影响? -
我有时会遇到分段错误。所以我猜这是因为 t 在创建线程之前就被销毁了。
标签: c++ multithreading