php获取随机数-linux times(NULL) 获取毫秒级时间戳

2023-09-01 0 3,634 百度已收录

在编写线程周期调度时,总是需要获取系统时间戳来确定一个业务周期需要多长时间。 我通常这样写:

unsigned int start_tick, used_tick;
while (!stop)
{
        start_tick = get_sys_tick(); // 获取系统毫秒时间戳
        task_run(start_tick);
        // 计算出一次任务轮循所用的时间,计算该休眠的时间
        used_tick = get_sys_tick() - start_tick;
        if (used_tick < 100)
            ms_sleep(100 - used_tick);
 }

// 获取系统毫秒时间戳
unsigned int get_sys_tick()
{
#ifdef _WIN32
    //#include 
    return GetTickCount();
#else
    //#include 
    return times(NULL);
#endif
}
// 跨平台sleep
void ms_sleep(unsigned int ms)
{
#ifdef _WIN32
    //winsock.h
    Sleep(ms);
#else
    //unistd.h
    usleep(ms * 1000);
#endif
}

task_run() 函数将每 100 毫秒调用一次,除非调用时间超过 100 毫秒。 task_run需要传入时间,因此如果上面的任务之一设置了较低的循环频率,则可以使用该时间进行比较。

需要注意的是,times(NULL)返回的时间不是微秒! 需要乘以10php获取随机数,精度小于毫秒。 如果你真的想精确到纳秒,你只能使用gettimeofday()。

时代函数是相当神秘的。 有博主说它返回系统时钟数。 需要减去sysconf(_SC_CLK_TCK)来得到时间,但是我写了一个小程序来测试php获取随机数,返回的确实是wall time。 目前,我们的平台使用这个函数来获取 linux 微秒时间戳并没有造成任何问题。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php获取随机数-linux times(NULL) 获取毫秒级时间戳 https://www.wkzy.net/game/186874.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务