- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本文由长春白癜风专科医院/ 收集,转载请注明出处
嵌入式操作系统内核原理和开发(多线程轮转)
之前我们也谈到了线程创建,基本上简单的系统就可以跑起来了,但是还没有到多线程
运行的地步。所以,我们下面试图所要做的工作就是创建更多的线程,让更多的线程运行起
来。为了做好这一点,首先我们需要对task_init 重新修整一下,
[cpp] view plaincopy
1. void task_init(int index, UINT32 data[], int size, void (*func)())
2. {
3. UINT32 unit = size;
4.
5. memset((void*)data, 0, size * sizeof(UINT32 ));
6. data[unit -1] = (UINT32 ) func;
7. data[unit -2] = 0;
8. data[unit -3] = 0;
9. data[unit -4] = 0;
10. data[unit -5] = 0;
11. data[unit -6] = 0;
12. data[unit -7] = 0;
13. data[unit -8] = 0;
14. data[unit -9] = 0;
15. data[unit -10] = (UINT32 ) data[unit - 9];
16. new [index] = (UINT32 ) data[unit -10];
17. }
这是一个创建线程的函数,有堆栈、大小、函数入口。那么,我们的函数什么时候创建
呢,其实就是在系统的开始位置就可以,
[cpp] view plaincopy
1. void set_all_task()
2. {
3. int index;
4.
5. for (index = 0; index THREAD_MAX_NUMBER; index ++)
6. task_init(index, task_stack[index], STACK_LENGTH, hello);
7. }
既然任务创建没有问题,那么下面就会涉及到简单轮转的问题。其实我们的方法特别简
单,就是根据current_thread_id 叠加,每一个thread 都有自己的运转机会。代码如下所示,
[cpp] view plaincopy
1. void signal_handler(int m)
本文由吉林白癜风医院/ 收集,转载请注明出处
本文由长春白癜风专科医院/ 收集,转载请注明出处
2. {
3. current_thread_id = current_thread_id % THREAD_MAX_NUMBER;
4.
5. if (0 == quit[current_thread_id])
6. {
7. swap(old, new [current_thread_id]);
8. }
9.
10. printf(count = %d in main!\n\n, count ++);
11. current_thread_id ++;
12. }
当然,为了要实现真正的多线程运行,我们还要保证线程始终在运行。要达到这一点也
不是很复杂,只需要把子函数设计为while (1)即可,
[cpp] view plaincopy
您可能关注的文档
- 第5篇 数组合广义表 Part2.ppt
- 基础设施建设和城市经济增长的关系.pdf
- 服务 ―― 验证概论.pdf
- 第2章流体输送机械和搅拌习题解答.pdf
- 电气施工与验收的细则要求02.pdf
- 第一章 将CAD导入奥维地图中.docx
- 第1篇 VB程序设计初步.doc
- 第3课 运筹学练习题.doc
- 一种随机数序列产生方法探讨概论.pdf
- OFDC认证证书及标志使用管理程序.pdf
- 原电池电动势的测定实验报告.pdf
- 与业主、设计、总包、监理和他承包人的配合措施.pdf
- 公司管理流程.pptx
- 2024_2025学年新教材高中地理第1章地球的运动素养综合训练新人教版选择性必修1.doc
- 2024_2025学年新教材高中地理第3章大气的运动第1节常见天气系统第1课时锋与天气分层作业新人教版选择性必修1.doc
- 2024_2025学年新教材高中地理第1章地球的运动第2节地球运动的地理意义第4课时正午太阳高度的变化四季更替和五带划分分层作业课件新人教版选择性必修1.pptx
- 2024_2025学年新教材高中地理第2章地表形态的塑造第2节构造地貌的形成第1课时地质构造与地貌课件新人教版选择性必修1.pptx
- 2024_2025学年新教材高中地理第1章地球的运动问题研究人类是否需要人造月亮课件新人教版选择性必修1.pptx
- 五片小雪花课件.pdf
- 2024_2025学年新教材高中地理第3章大气的运动第2节气压带和风带第1课时气压带和风带的形成分层作业课件新人教版选择性必修1.pptx
文档评论(0)