永发信息网

printf()经常有重入和性能上的问题。帮忙解释一下重入、性能上的问题

答案:3  悬赏:0  手机版
解决时间 2021-03-28 20:53
  • 提问者网友:骨子里的高雅
  • 2021-03-28 09:48
printf()经常有重入和性能上的问题。帮忙解释一下重入、性能上的问题
最佳答案
  • 五星知识达人网友:街头电车
  • 2021-03-28 10:34
重入:一般可以理解为一个函数在同时多次调用,例如操作系统在进程调度过程中,或者单片机、处理器等的中断的时候会发生重入的现象
举个例子比如双核计算机多线程同时打印文本就可能把文本交替的打印出来了,不是预期要的结果一般浮点运算都是由专门的硬件来完成,举个例子假设有个硬件寄存器名字叫做FLOAT,用来计算和存放浮点数的中间运算结果
假设有这么个函数
void fun()
{
//...这个函数对FLOAT寄存器进行操作
}
假如第一次执行,有个对浮点数操作运算的结果临时存在FLOAT寄存器中,而就在这时被中断了,而中断函数或者另一个进程也调用fun函数,这时第二次调用的fun函数在执行的过程中就会破坏第一次FLOAT寄存器中的结果,这样当返回到第一次fun函数的时候,结果就不正确了。
可以把fun函数理解为printf()函数。
性能:上述的问题也属于性能问题
全部回答
  • 1楼网友:天凉才是好个秋
  • 2021-03-28 12:13
楼上的解答都正确,只不过角度不同。
  • 2楼网友:舍身薄凉客
  • 2021-03-28 11:46
先解释重入的问题:
printf()函数与硬件相关,硬件端口相当于全局变量,函数内部的全局变量,导致该函数不可重入。
性能上的问题:
对于并发或同时执行的多进程或任务,若要正确使用printf()函数,必须互斥使用,在一个进程或任务执行printf ()时,其他使用printf()的进程或任务只能等待,不能及时显示。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯