我有以下场景,
void* Refresh(void *)
{
usleep(10);
..
}
static void RefreshViews()
{ ...
pthread_t t;
pthread_create( &t, NULL, &Refresh, NULL);
...
}
我想在 RefreshViews() 函数末尾运行一个线程。为了使其正常工作(临时解决方案),我在 Refresh() 函数执行开始时在另一个线程中添加了 sleep 。
如何更好地处理这种情况?
最佳答案
您可以使用三种方法:
就像我在评论中所说的那样,在离开函数之前启动线程。
static void RefreshViews() { /* The code... */ pthread_t t; pthread_create( &t, NULL, &Refresh, NULL); }
在调用
RefreshViews
的函数中创建线程。有一个额外的函数,充当实际函数的代理,并创建线程:
static void RefreshViews() { RealRefreshViews(); pthread_t t; pthread_create( &t, NULL, &Refresh, NULL); }
关于第一种方法的一个问题是,如果在函数结束之前有显式的返回
,则必须记住创建线程。或者使用 goto
转到线程创建,而不是 return
。
关于c - 方法结束后执行线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8384290/