工作-离线线程添加保护机制

本文探讨了离线数据上传线程中保护机制的重要性,特别是在文件删除失败导致线程卡死的情况。通过添加策略如prune_index_from_head裁剪索引文件,确保即使在数据上传失败时也能正确处理索引,避免系统卡死。同时,引入让出使用权的机制,防止用户定义的线程因离线线程未释放资源而挂起。

离线数据上传线程:添加保护机制策略

prune_index_from_head 索引文件裁剪,删除第一个索引

/*
	    attention:
	    1.当只有1个数据和1个索引头时,数据上传失败,此时不应该删除索引头,故加入(0 == buf)的判断。此时(0 != buf)
	    2.(0 == buf)时,此时只有索引没有数据,一定要删除索引,否则会导致不采集数据。
	    3.如果文件删除失败,尝试保护
	*/
	if ((0 == file_len) && (0 == buf)) {
		if (true == unlink(file)) {
			goto end;
		}

		g_exist_unlink_file = true;
	}

end:

	if (ppath != NULL) {
		rt_free(ppath);
		ppath = NULL;
	}

	return iret;

遇到unlink删除文件失败,此时系统会卡死在离线线程当中,用户定义的线程处于挂起状态,原因就是离线线程未让出使用权!
在这里插入图片描述

添加保护,让出使用权

static void offline_manager_entry(void *parameter)
{
	.....
	while (1) {
		...
		if (true == g_exist_unlink_file ) {
			g_exist_unlink_file = false;
			/* bad data, sleep */
			rt_thread_delay(RT_TICK_PER_SECOND);
		}
	}
}
实时磁场数据和ADC原始数据,按照列表方式显示所有模块详细信息数据。模块组 板卡地址 X轴(ΜT) Y轴(ΜT) Z轴(ΜT) 状态 软件所有源码支持四个串口录入的数据解析和显示。 数据可视化显示所有模块组 板卡地址 X轴(ΜT) Y轴(ΜT) Z轴(ΜT)的实时曲线,一共64条实时数据。模块详细信息 模块组 板卡地址 X轴(ΜT) Y轴(ΜT) Z轴(ΜT) 状态 模块组 1 0 -4.871 -9.304 5.809 在线 模块组 1 1 -1.454 5.224 -4.827 在线 模块组 1 2 2.571 7.751 -0.712 在线 模块组 1 3 -5.921 -4.413 -0.022 在线 模块组 1 4 2.507 -6.766 6.824 在线 模块组 1 5 -1.717 0.691 2.818 在线 模块组 1 6 -4.999 -7.273 7.056 在线 模块组 1 7 3.922 5.443 8.176 在线 模块组 2 0 -- -- -- 离线 模块组 2 1 4.786 6.322 5.693 在线 模块组 2 2 7.572 -8.687 -2.714 在线 模块组 2 3 -8.399 -7.124 -2.691 在线 模块组 2 4 -- -- -- 离线 模块组 2 5 8.866 1.738 6.775 在线 模块组 2 6 3.923 -6.109 -7.494 在线 模块组 2 7 -2.918 -7.984 -4.181 在线 模块组 3 0 3.550 4.593 -1.270 在线 模块组 3 1 -- -- -- 离线 模块组 3 2 8.530 -3.623 3.216 在线 模块组 3 3 -0.007 -7.285 8.763 在线 模块组 3 4 6.577 -3.071 -2.868 在线 模块组 3 5 -- -- -- 离线 模块组 3 6 -0.484 -4.684 4.269 在线 模块组 3 7 2.124 4.529 1.093 在线 模块组 4 0 7.896 7.632 -7.451 在线 模块组 4 1 7.447 -5.140 -8.733 在线 模块组 4 2 7.001 -0.627 -3.335 在线 模块组 4 3 -- -- -- 离线 模块组 4 4 -- -- -- 离线 模块组 4 5 7.803 -6.403 6.750 在线 模块组 4 6 -6.250 7.109 -2.151 在线 模块组 4 7 -- -- -- 离线
最新发布
11-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值