首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

,linux,printf会导致线程阻塞

2012-09-13 
在线等,linux,printf会导致线程阻塞?在项目开发时碰到这样一个比较奇怪的问题:应用的某个子线程中调用prin

在线等,linux,printf会导致线程阻塞?
在项目开发时碰到这样一个比较奇怪的问题:应用的某个子线程中调用printf向debug串口输出log,当串口连接到PC的时候,没有问题,一旦串口线与PC串口断开,则在一定时间内,该子线程会阻塞,但只要串口线一连接上PC,阻塞解除。初步估计可能是因为printf导致buffer满了以后阻塞此调用,因为printf输出内容很多时,很快就阻塞,而printf内容较少时,这个时间要长一些。 这里我只是猜测,请教下论坛里的达人,有谁知道原因,谢谢,在线等~~~

[解决办法]
是不是判断有误。
没有串口连接只会造成数据丢失,不会阻塞。
[解决办法]
难不成用了握手信号,握手不成功不发送数据?

但是通常printf只是单纯输出数据

看看底层串口驱动吧,是怎么处理的
[解决办法]

探讨

printf可能会造成堆溢出

[解决办法]
连上串口后,你的接收程序就能正常工作了。而如果断开串口,就只是发送数据,看一看你的软件是查询式发送还是中断发送数据。另外,你可以用条件编译将printf全部ommit掉,看看断开串口是否阻塞;当然,printf本身还具有延时功能。
[解决办法]
探讨

大概串口打开时,配置了硬件流控,导致通信时必须检测RTS之类的信号。你查一下串口的配置看看,去掉硬件流控试试。

[解决办法]
探讨
大概串口打开时,配置了硬件流控,导致通信时必须检测RTS之类的信号。你查一下串口的配置看看,去掉硬件流控试试。

[解决办法]
估计是驱动的问题,与printf无关
[解决办法]
printf要访问硬件,势必会有全局锁和线程调度

热点排行