硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1453|回复: 5
收起左侧

[其它] 打印调试信息怎么才能线程安全

[复制链接]

6

主题

18

回帖

36

积分

新手上路

积分
36
发表于 2021-8-24 18:25:17 | 显示全部楼层 |阅读模式
printf应该不是线程安全的,怎么才能保证其线程安全,如果每次调用前后都开关中断,或者互斥,感觉很麻烦,怎么做才能再封装一下printf?
比如
void  fengzhuang(const char * format,  ...){
    获取互斥量

     printf(format, ...);
     释放互斥量  

}
只是个比喻,不用在意语法(其实是不知道咋写 - -#),  

请大神们指点。


回复

使用道具 举报

3

主题

110

回帖

119

积分

初级会员

积分
119
发表于 2021-8-24 20:50:45 | 显示全部楼层
弄一个串口专门打logger
回复

使用道具 举报

19

主题

370

回帖

427

积分

高级会员

积分
427
发表于 2021-8-25 00:42:10 | 显示全部楼层
C11的thread关键字(启用TLS)
回复

使用道具 举报

19

主题

370

回帖

427

积分

高级会员

积分
427
发表于 2021-8-25 00:52:25 | 显示全部楼层
_Thread_local
回复

使用道具 举报

1

主题

13

回帖

16

积分

新手上路

积分
16
发表于 2021-8-25 08:37:26 | 显示全部楼层
可以看看硬汉例程里的APP_Printf函数的实现
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2021-8-25 08:53:54 | 显示全部楼层
硬汉的ThreadX教程里用的是互斥量,可以参考下。但是互斥量可能会导致调用方阻塞,某些场合下不适用。打算用消息队列实现,看了下实现起来比较麻烦。后来在封装函数里又加了个参数,可以设置等待或者不等待。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-20 22:49 , Processed in 0.228620 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表