Chr*_*ndy 1 c++ profiling verysleepy
在分析我的代码以找到变慢的时候,我有3个功能显然需要永远,这就是非常困倦的说法.
这些功能是:
ZwDelayExecution 20.460813 20.460813 19.987685 19.987685
MsgWaitForMultipleObjects 20.460813 20.460813 19.987685 19.987685
WaitForSingleObject 20.361805 20.361805 19.890967 19.890967
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这些功能是什么?为什么他们花了这么长时间,以及如何解决它们.
谢谢
可能这些函数用于在Win32 API中使线程"休眠".它们也可以用作线程同步,所以检查这些东西.
它们占用了大量的CPU时间,因为它们是专为此而设计的.
该WaitForSingleObject函数可以等待以下对象:
所以它可用于其他可能的事情是控制台用户输入等待.
ZwDelayExecution是Windows的内部功能.可以看出它用于实现Sleep功能.这是Sleep函数的调用堆栈,所以你可以亲眼看到它:
0 ntdll.dll ZwDelayExecution
1 kernel32.dll SleepEx
2 kernel32.dll Sleep
Run Code Online (Sandbox Code Playgroud)
它可能使用汇编低级功能来实现,因此它可以延迟精度为100ns的线程.
MsgWaitForMultipleObjects有一个类似的WaitForSingleObject目标.
| 归档时间: |
|
| 查看次数: |
2191 次 |
| 最近记录: |