抽象的来讲,信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程/进程(车辆)都会将该整数减一(通过它当然是为了使用资源),当该整数值为 0 时,所有试图通过它的线程都将处于等待状态。在信号量上我们定义两种操作: take ( 获取) 和Release(释放)。当一个线程调用 take ...
分类:
其他好文 时间:
2016-05-17 17:31:19
阅读次数:
430
结果分析:在 test1 线程的 for 循环中我们对 i 做了 10000 次累加,如果没有其他线程的“干预”,那么全局变量 g_tmp 的值应该是 10000,现在的输出结果是 10001,这意味全局变量 g_tmp 的值被线程 2 修改过。整个程序运行过程中各个线程的状态变化是这样的: rt_ ...
分类:
编程语言 时间:
2016-05-17 13:29:06
阅读次数:
319
CPU 的使用率一般是我们比较关心的问题,在这里我们就用空闲线程的钩子函数去统计 CPU 的使用率,并通过串口打印出来。首先我们在初始化线程中设置好钩子函数,并在 LED 线程中给系统人为的加入很多“事情”,让其占用率变高,方便统计,然后每个 1 秒中打印一次 CPU 使用率。其中 CPU 的使用率 ...
分类:
其他好文 时间:
2016-05-17 13:18:25
阅读次数:
360
前面两个例子演示的线程调度是由系统“主动干预”的情况的线程切换,其实我们也可以根据实际情况,采用主动让出 CPU 使用权。RT-Thread 中的系统函数: rt_thread_yield(),可以让调用它的线程暂时让出 CPU 的使用权,而使下一个最高优先级的线程得以运行,但这时调用 rt_thr ...
分类:
编程语言 时间:
2016-05-17 13:18:11
阅读次数:
251
线程 test2 的打印信息输出不全,说明 test2 线程的执行被打断了, 因为 test1 线程和 test2线程的优先级都是 15,并不会发生抢占的情况,所以说 test2 线程是等到自己的执行时间片到达时,被系统剥夺了 CPU 使用权,而将使用权交给了 test1 线程,从而 test1 线 ...
分类:
编程语言 时间:
2016-05-17 13:07:33
阅读次数:
389
程序运行分析:1、首先系统调度 test1 线程投入运行,打印第 0 次运行的信息,然后通过延时函数将自己挂起 100 个时间片,系统将 test2 线程调度运行;2、 test2 线程打印第 0 次运行信息,然后通过延时函数将自己挂起 50 个时间片;3、系统中无任务运行,系统将空闲线程调入运行; ...
分类:
编程语言 时间:
2016-05-17 09:43:50
阅读次数:
234
RT-Thread 实时操作系统核心是一个高效的硬实时核心,它具备非常优异的实时性、稳定性、可剪裁性,当进行最小配置时,内核体积可以到 3k ROM 占用、 1k RAM 占用。 RT-Thread 中的“线程”一般由三部分组成:线程代码(函数)、 线程控制块、 线程堆栈。 /* 指向线程控制块的指 ...
分类:
其他好文 时间:
2016-05-16 19:35:59
阅读次数:
242
设备驱动实现步骤: 1. 按照RT-Thread对象模型,扩展一对象有两种方式: 1)定义自己的私有数据结构,然后赋值到RT-Thread设备控制空的user_data指针上; 2)从struct rt_device结构中派生。(推荐) 2. 实现I/O设备模块中定义的6个公共设备接口,开始可以为空 ...
分类:
其他好文 时间:
2016-05-05 00:32:47
阅读次数:
925
一. finsh在RT-Thread中被设计成一个独立的线程,它试图从外部设备中获得用户的输入,然后对用户命令进行解析执行。 正确使用finsh需要一个关联过程: 上述过程需要正确配置如下项: #define RT_USING_FINSH //rt_config.h #define RT_USING ...
分类:
其他好文 时间:
2016-05-01 13:31:58
阅读次数:
397
ubuntu@ubuntu:~$ python -V Python 2.7.10 ubuntu@ubuntu:~$ sudo apt-get install scons rt-thread-master/bsp/x86/rtconfig.h /* RT-Thread config file */ #
分类:
其他好文 时间:
2016-02-11 11:10:48
阅读次数:
260