随笔 - 90  文章 - 0 评论 - 2 阅读 - 71705
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

1、头文件

1
#include <linux/kthread.h>

2、定义变量

1
2
static pid_t thread_id;    //线程ID
static struct completion th_exit;    //同步信号量

3、初始化

1
init_completion(&th_exit);

4、建立线程

1
thread_id = kernel_thread(fuction, NULL, CLONE_FS | CLONE_FILES);

6、线程函数实体

1
2
3
4
5
6
7
8
9
10
11
int fuction0(void *arg)
{    
//  daemonize("mythread");  //释放资源? 这句会导致线程执行完毕却不退出。类似于僵尸线程
    allow_signal(SIGKILL);  //定义接受信号
    while (!signal_pending (current))   //返回不为0表示有信号处理
    {
        silabs_device_start(0);    //任务函数
        schedule();            //线程休眠,调度其他线程
    }
    complete_and_exit(&th_exit0, 1);    //接收到信号量,退出线程
}

7、任务函数和信号量

1
2
3
4
5
6
7
silabs_device_start
{
  .................................
  .................................
  kill_proc (thread_id, SIGTERM, 1);  //杀掉线程
  wait_for_completion(&th_exit);    //激活信号量
}

  

 

posted on   阳光农场皮卡  阅读(443)  评论(0编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· .NET 8.0 + Linux 香橙派,实现高效的 IoT 数据采集与控制解决方案
· DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件
点击右上角即可分享
微信分享提示