我正在用C编写一个Linux守护程序,该守护程序通过SPI接口(ioctl)从ADC获取值. SPI(spidev-用户空间)似乎有点不稳定,并且会在随机时间冻结守护程序.

我需要更好地控制对获取值的函数的调用,并且我正在考虑将其作为线程,可以等待完成并获取返回值,如果超时,则假定它冻结并杀死了它.它没有这个新线程关闭守护程序本身.然后,我可以采取一些措施,例如在重启之前重置ADC.这可能吗?

我要实现的伪示例:

(函数int get_adc_value(int adc_channel,float * value))

> pid = thread(get_adc_value(1,& value); //使线程调用该函数

> wait_until_finish(pid,超时); //等待直到函数完成/超时

> if(timeout)kill pid,重新开始//如果线程在给定时间内没有返回,则杀死它(它被冻结)

>否则,如果返回值正常,则继续//如果成功,则处理返回变量值并继续

感谢您对此事的任何投入,高度赞赏示例!

解决方法:

我会尝试使用pthreads库.我已经在我的一些c项目中成功使用了它,它使您可以很好地控制运行时间和时间.

标签:multithreading,daemon,c-3,linux,process

来源: https://codeday.me/bug/20191210/2098936.html

linux调用线程函数,作为线程调用的C函数-Linux Userland程序相关推荐

  1. VC++中多线程学习(MFC多线程)一(线程的创建、线程函数如何调用类成员呢?如何调用主对话框的成员?、MFC中的工作线程和界面线程的区别)

    这里废话不多讲了,因为项目原因,需要开启线程进行处理,在不了解线程的情况下,直接百度一下,然后就使用了,结果可想而知,出现了异常,所以花了一天时间系统学习一下多线程,这里主要是针对win32编程方面的 ...

  2. 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )

    文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...

  3. Linux系统编程----15(线程与进程函数之间的对比,线程属性及其函数,线程属性控制流程,线程使用注意事项,线程库)

    对比 进程 线程 fork pthread_create exit (10) pthread_exit (void *) wait (int *) pthread_join (,void **)阻塞 ...

  4. 【Linux 线程】常用线程函数复习《一》

    1.pthread_create以及pthread_self函数 1 /**************************************************************** ...

  5. Boost库实现线程池学习及线程实现的异步调用

    A.Boost线程池实现 参考自: Boost库实现线程池实例 原理:使用boost的thread_group存储多个线程,使用bind方法将要处理的函数转换成线程可调用的函数进行执行:使用队列存储待 ...

  6. 第一节:复习委托,并且通过委托的异步调用开启一个新线程和异步回调、异步等待。

    一. 再谈委托 1. 委托是一个关键字为delegate的自定义类型,通过委托可以把方法以参数的形式传递给另外一个方法,实现插件式的开发模式: 同时调用委托的时候,委托所包含的所有方法都会被实现. 2 ...

  7. 第一节:复习委托,并且通过委托的异步调用开启一个新线程和异步回调、异步等待

    一. 再谈委托 1. 委托是一个关键字为delegate的自定义类型,通过委托可以把方法以参数的形式传递给另外一个方法,实现插件式的开发模式: 同时调用委托的时候,委托所包含的所有方法都会被实现. 2 ...

  8. 【Linux 线程】常用线程函数复习《三》

    1.关于函数pthraed_join与函数pthraed_detach 在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached).一个可结合的线程能够被其他线程收回其资源 ...

  9. python 进程池、线程池 与异步调用、回调机制

    进程池.线程池使用案例 from concurrent.futures import ProcessPoolExecutor # 进程池模块 from concurrent.futures impor ...

最新文章

  1. 设置Distribution clean up 每次删除Command的数量
  2. 通过XmlDocument读写Xml文档(转)
  3. ZeroMQ接口函数之 :zmq_strerror - 获取ZMQ错误描述字符串
  4. BMP图片魔法师KeyGen
  5. python3 str bytes 字符串 字节 互相转换
  6. 程序员也得懂点儿理财知识
  7. 用JavaScript获取表单里的值
  8. Maven发布到Nexus
  9. MOSS中自定义WebService
  10. oracle快速排序法,经典算法系列之快速排序算法
  11. 投票源码程序_基于用户投票的排名算法
  12. 把房子交给“我爱我家”后,我都不敢再进去了
  13. 无限分级函数 简单 引用绑值
  14. 开心消消乐游戏网页设计作品 学生dreamweaver作业静态HTML网页设计模板 游戏主题网页作业制作
  15. Shader山下(十九)标记Tag
  16. 网络工程师——交换技术(线路交换、分组交换技术、帧中继交换、信元交换技术)
  17. IntelliJ IDEA如何创建Source Folder和导入jar包
  18. 创建 Windows XP 图标
  19. 电脑端微信总是自动接收文件,怎么办
  20. 西刺ip代理采集和ip测试-国内免费高匿版本

热门文章

  1. 写个自己用的jdbc 简单框架
  2. mount: none already mounted or /cgroup busy
  3. Remository3.52简体中文语言包
  4. 2007年河南湖北各市GDP
  5. POSIX 信号量和互斥锁
  6. python绘制函数曲线x2sin(x2-x-2)_下面哪几个选项中的语句能够完成用fplot语句来绘制函数y=x^3+2*x^2+sin(x)在区间[-5,5]上的图形。...
  7. 用mysql完成的实际案例_mysql完成SQL统计的案例
  8. python运行代码不成功_python的运行时易犯错误,你中招了没?快来学习了
  9. java web流量阀值_Javaweb应用使用限流处理大量的并发请求详解
  10. 动态时间规整算法(DTW)通俗易懂