程序LoadLibray()一个动态库 现想加一个时间判断 如果加载小于x秒就有返回值 做1处理 大于x秒 按动态库返回值处理 这种怎样实现
线程,定时器貌似都可以吧
你可以起个线程来做这个计时操作~
LARGE_INTEGER Frequency, StartLoad, EndLoad;
QueryPerformanceFrequency(&Frequency);
QueryPerformanceCount(&StartLoad);
Loadlibray()......
QueryPerformanceCount(&EndLoad);
int totalSec = (EndLoad.QuadPart - StartLoad.QuadPart) / Frequency.QuadPart;
windows下操作系统级别支持的最高精度时间, 根据cpu主频不同精度也不同, 一般在微秒级
QueryPerformanceFrequency这个函数获取硬件时钟的每秒嘀嗒数据, 也就是硬件时钟每秒钟会跳动多少下, 但这不是cpu主频, 这个数一般是几百万的样子
QueryPerformanceCount是获取当前硬件时钟的数, 因为硬件时钟里有个64位的寄存器, 从开机起每一个硬件滴答这个寄存器就加1
所以获取俩次相减再除以硬件时钟每秒钟的频率得出来的就是花费了多少秒
如果想获取毫秒数据的话把最后一句改下
int totalMillSec = (EndLoad.QuadPart - StartLoad.QuadPart) / (Frequency.QuadPart / 1000);
微秒的话如下
int totalMicroSec = (EndLoad.QuadPart - StartLoad.QuadPart) / (Frequency.QuadPart / 1000000);
这个没有办法精确到纳秒, 如果想精确到纳秒可以试下以cpu的主频为参照, 或者加个专门计时的pcie的接口卡
可以在加载前与加载后分别调用系统时间函数,计算时间差来进行判断