环状同步造成的死锁问题
发布日期:2021-07-01 04:27:30
浏览次数:3
分类:技术文章
本文共 2360 字,大约阅读时间需要 7 分钟。
文章目录
1 环状同步造成的死锁问题
竞争资源造成的死锁:
环路等待事件引发死锁: 示例代码如下:/** * @brief tOS应用示例 * @details * @author 01课堂 李述铜 http://01ketang.cc * @date 2017-06-01 * @version 1.0 * @copyright 版权所有,禁止用于商业用途 */#include "tinyOS.h"#include "app.h"#include "hal.h"static tTask task1; // 任务1结构static tTask task2; // 任务2结构static tTask task3; // 任务3结构static tTask task4; // 任务4结构static tTaskStack task1Env[TASK1_ENV_SIZE]; // 任务1的堆栈空间static tTaskStack task2Env[TASK2_ENV_SIZE]; // 任务2的堆栈空间static tTaskStack task3Env[TASK3_ENV_SIZE]; // 任务3的堆栈空间static tTaskStack task4Env[TASK4_ENV_SIZE]; // 任务4的堆栈空间int task1Flag; // 用于指示任务运行状态的标志变量int task2Flag; // 用于指示任务运行状态的标志变量int task3Flag; // 用于指示任务运行状态的标志变量int task4Flag; // 用于指示任务运行状态的标志变量tSem task1WaitSem;tSem task2WaitSem;tSem task3WaitSem;/** * 任务的运行代码 * @param param 任务初始运行参数 */void task1Entry (void *param) { for (;;) { tSemWait(&task1WaitSem, 0); task1Flag = 1; tTaskDelay(1); tSemNotify(&task2WaitSem); task1Flag = 0; tTaskDelay(1); }}/** * 任务的运行代码 * @param param 任务初始运行参数 */void task2Entry (void *param) { for (;;) { tSemWait(&task2WaitSem, 0); task2Flag = 1; tTaskDelay(1); tSemNotify(&task3WaitSem); task2Flag = 0; tTaskDelay(1); }}/** * 任务的运行代码 * @param param 任务初始运行参数 */void task3Entry (void *param) { for (;;) { tSemWait(&task3WaitSem, 0); task2Flag = 1; tTaskDelay(1); tSemNotify(&task1WaitSem); task2Flag = 0; tTaskDelay(1); }}/** * 任务的运行代码 * @param param 任务初始运行参数 */void task4Entry (void *param) { for (;;) { task4Flag = 1; tTaskDelay(1); task4Flag = 0; tTaskDelay(1); }}/** * App的初始化 */void tInitApp (void) { halInit(); tSemInit(&task1WaitSem, 0, 1); tSemInit(&task2WaitSem, 0, 1); tSemInit(&task3WaitSem, 0, 1); tTaskInit(&task1, task1Entry, (void *) 0x0, TASK1_PRIO, task1Env, sizeof(task1Env)); tTaskInit(&task2, task2Entry, (void *) 0x0, TASK2_PRIO, task2Env, sizeof(task2Env)); tTaskInit(&task3, task3Entry, (void *) 0x0, TASK3_PRIO, task3Env, sizeof(task3Env)); tTaskInit(&task4, task4Entry, (void *) 0x0, TASK4_PRIO, task4Env, sizeof(task4Env));}
参考资料:
转载地址:https://muzimin.blog.csdn.net/article/details/105733899 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月25日 14时09分07秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
树莓派程序开机自启动
2019-05-01
连锁门店无线通信方案
2019-05-01
配置Lotus Domino集群视频详解
2019-05-01
Linux软件万花筒
2019-05-01
全球开源软件发展趋势分析
2019-05-01
Linux常用的安全工具
2019-05-01
python 多进程之进程池的操作
2019-05-01
flask整理之 flask程序中的debug模式
2019-05-01
比特币,父母这一辈能接受吗?
2019-05-01
SnapEx的新感觉,对新手很友好
2019-05-01
首个聚合器怎么产生的,并运用领域在什么
2019-05-01
区块链技术应用,最先医疗行业
2019-05-01
新币上市旧币会降价吗
2019-05-01
当博士进入币圈会怎么样
2019-05-01
《增长黑客》(肖恩·艾利斯)学习笔记——第二部分 实战
2019-05-01
python使用HTMLTestRunner查看运行函数
2019-05-01
linux下安装jenkins+git+python
2019-05-01
解决uiautomatorviewer中添加xpath的方法
2021-07-04
性能测试的必要性评估以及评估方法
2021-07-04