如何等待Linux内核线程(kthread)退出?

2023-11-29

我刚刚开始在 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 and t2由内核创建并运行,然后程序返回循环开始处创建并运行另外两个线程。由于没有条件等待这些线程完成,内核创建了如此多的线程,从而导致堆栈溢出。

我只想知道如何让程序等待这两个线程完成,然后返回循环启动另外两个线程。

任何帮助,将不胜感激。


/* Wait for kthread_stop */
set_current_state(TASK_INTERRUPTIBLE);
while (!kthread_should_stop()) {
    schedule();
    set_current_state(TASK_INTERRUPTIBLE);
}

查看这篇文章了解更多信息:《沉睡在内核》.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何等待Linux内核线程(kthread)退出? 的相关文章

随机推荐

  • Echarts:绘制信号的方差

    我想在图表中绘制多个信号的方差 或者基本上填充上部信号和下部信号之间的空间 是否可以创建这样的图表 我看到了置信带示例 https echarts apache org examples en editor html c confidenc
  • 向 JPanel 添加椭圆形

    这是我的简单代码 我真的不知道如何将绘制的椭圆添加到JPanel 我以前画过一些画 但我从未使用过构造函数 所以我不知道 public class Buffer extends JPanel public JFrame frame publ
  • 我在记录时崩溃:“所需条件为假:format.sampleRate == hwFormat.sampleRate”afterweb rtc 调用

    我的记录工作正常 但问题是在 WebRTC 调用之后 我崩溃了 所需条件为 false format sampleRate hwFormat sampleRate 这是我开始崩溃和 installTap 的方式 func startReco
  • asp .Net 中的 JavaScript

    我在我的 asp Net 页面中收到 WebResource 错误 var pendingCallbacks new Array Microsoft JScript runtime error Array is undefined 我不知道
  • 无法删除以前的 doSMP 队列

    我正在尝试使用 doSMP 当我尝试时w lt startWorkers 4 我收到错误 1 在startWorkers workerCount 4 中 存在使用 doSMP1 的现有 doSMP 会话 实际上是 doSMP1 doSMP8
  • 在 GMAIL 中预填充大量正文文本时出现请求 URI 太长错误

    这是后续this问题 我正在构建 Google Apps 应用程序的地方 我可以使用以下网址从我的应用程序调用 Gmail 撰写消息页面 但是 当我尝试在 body 参数中传递很长的一行文本 例如回复消息正文 时 我从 Gmail 收到一条
  • Kotlin 通过反射调用伴随函数

    我是科特林新手 面临反射和泛型的问题 下面是我的代码 abstract class Action fun sleep body Person gt Unit var p Person a p body println p name is z
  • 精灵套件保存最高分

    我使用 Sprite Kit 带有 swift xCode 6 beta 4 构建了一个游戏 我需要保留玩家达到的最高分数 所以只有一个 Int 我知道有一种方法可以使用 NSCoding 来做到这一点 我用 google 搜索了一下 只找
  • cassandra快照没有nodetool但仅通过java api

    如何在不使用nodetool而仅通过java api的情况下拍摄cassandra快照 我需要不使用 nodetool 实用程序来拍摄 cassandra 中键空间的快照 我必须通过java api来完成 如果有人知道怎么做 请回答 我必须
  • 检查 A 列的值是否存在于 B 列的同一行或前一行中

    我有这个数据框 df lt structure list A 1 5 B c 1L 5L 2L 3L 3L class data frame row names c NA 5L A B 1 1 1 2 2 5 3 3 2 4 4 3 5 5
  • 缩放和缩放

    我需要实现缩放JDesktopPane包含在一个JScrollPane 我之前已经通过覆盖成功缩放paintComponent 方法及调用scale double double 这不能正常工作 JInternalFrame s and JP
  • 重复后台任务[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我刚刚开始尝试使用 任务 而不是线程 并尝试实现一个具有后台 清理 任务的对象 只要该对象正在使用 该任务每 5 分钟运行一次 但不应阻止垃圾收集 粗略地说 这显然行不通 public
  • selenium python webscrape 在第一次迭代后失败

    我正在通过到到网保存评论 未翻译 原始 和翻译评论 从葡萄牙语到英语 因此 抓取工具首先选择要显示的葡萄牙语评论 然后像往常一样将它们一一转换为英语 并将翻译后的评论保存在com 中 而扩展的非翻译评论则保存在expanded commen
  • 如何在不使用新图像的情况下减小Android单选按钮上显示的图像大小

    我设计了一个活动 其中有两个单选按钮 但这些尺寸已经足够了 我想减小它 我使用的文本大小仅减小文本 如果布局尺寸减小 则仅减小视图而不是单选按钮圆圈
  • 当我只使用 LinqToSql 和 Ado.Net 时,为什么 TransactionScope 使用分布式事务

    我们在一台机器上遇到问题 并显示错误消息 服务器 XXX 上的 MSDTC 不可用 该代码使用的是交易范围包装一些 LingToSql 数据库代码 交易内部还有一些原始的 Ado net 由于仅访问单个 SQL 数据库 2005 为什么要使
  • C#,从TextBox和TextArea获取其他应用程序文本?

    早上好 我希望能够分析我正在编写的文本 无论我是什么应用程序 例如 如果我在这里输入此文本区域 我希望能够获取文本 就像在 Outlook 的主题文本框中一样 我在Google上搜索没有成功 也许是因为它需要Win32API调用 目标是开始
  • 使用指针参数从 C# 调用 C++ 方法 (WCT)

    我对从 C 调用 C 方法的概念很陌生 假设我想调用一个C 函数GetThreadWaitChain来自 C https msdn microsoft com en us library windows desktop ms679364 v
  • 将 python 函数的输出从 STDOUT 重定向到 Python 中的变量

    这就是我想要实现的目标 def fun runner InteractiveConsole while True code raw input code rstrip n I want to achieve the following By
  • vue-router 可以在新选项卡中打开链接吗?

    我有一个摘要页面和一个详细子页面 所有路线均通过以下方式实现vue router v 0 7 x 使用如下编程导航 this router go path link to page 但是 当我从摘要页面路由到子页面时 我需要在新选项卡中打开
  • 如何等待Linux内核线程(kthread)退出?

    我刚刚开始在 Linux 内核线程上编程 我有一个问题想与大家分享 我的代码是 void do big things void data do some really big things struct task struct t1 str