zoukankan      html  css  js  c++  java
  • time.h文件中包含的几个函数使用时须注意事项

    time.h头文件中包含以下函数

    char* asctime(const struct tm *tm);

    char* asctime_r(const struct tm *tm,char *buf);

    char* ctime(const time_t *timep);

    char* ctime_r(const time_t *timep,char *buf);

    struct tm *gmtime(const time_t *timep);

    struct tm *gmtime_r(const time_t *timep,struct tm *result);

    struct tm *localtime(const time_t *timep);

    struct tm *localtime_r(const time_t *timep,struct tm *result);

    time_t mktime(struct tm *tm);

    上面类似的函数基本都有两个,一个不带_r,另一个不带_r,在写代码的时候,经常会用到读取系统时间的函数。很多人都会调用localtime函数来将时间转换本地时间,但是大家往往会忽略了一点,localtime函数不是线程安全的。如果在多线程里调用localtime函数,很可能会出现问题。

    struct tm *localtime(const time_t *timep);

    这个函数在返回的时候,返回的是一个指针,实际的内存是localtime内部通过static申请的静态内存,所以通过localtime调用后的返回值不及时使用的话,很有可能被其他线程localtime调用所覆盖掉,所以多线程应用里面,应该用localtime_r函数替代localtime函数,因为localtime_r是线程安全的。

    上面其它函数也是类似的,多线程使用时要特别注意。

  • 相关阅读:
    Aruba无线控制器添加黑名单
    H3C POE交换机办公网常用配置
    H3C接入交换机办公网常用配置
    H3C核心交换机办公网常用配置
    H3C IRF-原理
    华为交换机SSH远程配置
    H3C无线AC黑白名单配置
    H3C 5130交换机初始化配置
    H3C交换机恢复出厂设置
    H3C交换机SSH登录配置
  • 原文地址:https://www.cnblogs.com/zhangnianyong/p/5591402.html
Copyright © 2011-2022 走看看