一、概述在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断:1、IRQ number。CPU需要为每一个外设中断编号,我们称之IRQ Number。这个IRQ number是一个虚拟的interrupt ID,和硬件无关,仅仅是被CPU用来标识一个外设中断。2、HW inte... ...
分类:
系统相关 时间:
2017-09-27 00:49:03
阅读次数:
243
一、前言GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1~V4(V2最多支持8个ARM core,V3/V4支持更多的ARM core,主要用于ARM64服务器系统结构... ...
分类:
系统相关 时间:
2017-09-27 00:42:55
阅读次数:
281
一、前言本文主要的议题是作为一个普通的驱动工程师,在撰写自己负责的驱动的时候,如何向Linux Kernel中的中断子系统注册中断处理函数?为了理解注册中断的接口,必须了解一些中断线程化(threaded interrupt handler)的基础知识,这些在第二章描述。第三章主要描述了驱动申请 i... ...
当一个线程执行的代码出现异常时,其所持有的锁会自动释放 ThreadA 和 ThreadB public class ThreadA extends Thread { private MyObject myObject; public ThreadA(MyObject myObject){ this ...
分类:
编程语言 时间:
2017-09-26 14:57:52
阅读次数:
246
一、背景 最近在学习线程相关的知识,然后顺理成章少不了学习线程池,刚开始在没有深入的学习之前,感觉线程池是很神秘的东西,而且完全想不到怎么才能实现一个自己的线程池,然后还能保证它的可用性,然后就一直琢磨,琢磨了一周才不多,也是网上各种查资料,终于明白了线程池的原理,也自己手写一个线程池,来加深印象, ...
分类:
编程语言 时间:
2017-09-25 12:00:10
阅读次数:
253
我们先来分别看一下这两个接口 Runnable: 只有一个方法run(),表示执行任务的逻辑。 Callable: 也只有一个方法call(),但是是一个有返回值的方法,这给我们提供了获取方法执行结果的可能,即使它是个异步的任务,它可以获取异常,给我们极大地便利知道任务执行失败的原因。 Runnab ...
分类:
编程语言 时间:
2017-09-25 00:47:59
阅读次数:
239
Thread.getAllStackTraces().keySet().each() { t -> t.interrupt(); } ...
分类:
其他好文 时间:
2017-09-21 15:55:22
阅读次数:
811
中断是嵌入式系统中重要的组成部分,但是在标准C中不包含中断。许多编译开发商在标准C上增加了对中断的支持,提供新的关键字用于标示中断服务程序 (ISR),类似于__interrupt、#program interrupt等。当一个函数被定义为ISR的时候,编译器会自动为该函数增加中断服务程序所需要的中 ...
分类:
其他好文 时间:
2017-09-19 16:16:45
阅读次数:
344
Thread sleep()休眠就是让线程进入休眠状态TIMED_WAITING,sleep("毫秒数"),当休眠时间到了之后继续线程。当然也可以用中断线程interrupt()来中断线程休眠。 利用线程休眠来做秒表 ...
分类:
其他好文 时间:
2017-09-18 13:21:40
阅读次数:
157
生产者-消费者模式是一个经典的多线程设计模式,它为多线程的协作提供了良好的解决方案。在生产者-消费者模式中,通常有两类线程,即若干个生产者线程和若干个消费者线程。生产者线程负责提交用户请求,消费者线程负责处理用户请求。生产者和消费者之间通过共享内存缓冲区进行通信。 生产者-消费者模式中的内存缓冲区的 ...
分类:
其他好文 时间:
2017-09-16 20:41:09
阅读次数:
177