【发布时间】:2014-02-08 17:20:57
【问题描述】:
我刚刚开始在 Linux 内核线程上编程。我有一个问题想和大家分享。我的代码是:
void do_big_things(void *data)
{
// do some really big things
}
struct task_struct *t1;
struct task_struct *t2;
void calling_fucntion()
{
for(j =0; j < 100; j++)
{
t1 = kthread_run(do_big_things, &data1, "thread1");
t2 = kthread_run(do_big_things, &data2, "thread2");
}
}
现在就我对这个问题的结论(我可能错了)是线程 t1 和 t2 是由内核创建和运行的,然后程序返回在循环开始时创建并运行另外两个线程。由于没有条件等待这些线程完成,内核创建了如此多的线程从而导致堆栈溢出。
我只想知道如何让程序等待这两个线程完成,然后返回循环开始另外两个线程。
任何帮助将不胜感激。
【问题讨论】:
标签: c linux-kernel