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是线程安全的。

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

time.h文件中包含的几个函数使用时须注意事项的更多相关文章

  1. 如何在Qt资源文件中包含和释放exe等各种类型文件?

    操作系统:Windows 10 X64 企业版 Qt: 5.8.0 QtCreater: 4.2.1 刚刚开始学习Qt,不断遇到困难和挑战,前几天在各个QQ群里询问如何在Qt的资源文件中包含和释放ex ...

  2. C_文件包含.h文件和包含.c文件总结

    很多人对C语言中的 “文件包含”都不陌生了,文件包含处理在程序开发中会给我们的模块化程序设计带来很大的好处,通过文件包含的方法把程序中的各个功能模块联系起来是模块化程序设计中的一种非常有利的手段. 文 ...

  3. 不要在.h文件中定义变量

    今天在头文件.h中初始化了一个数组和函数,在编译的时候提示这个数组和函数重新定义了,检查后发现,犯了一个致命的错误,在头文件中定义变量... 以下引用别人的一篇说明,警示自己. C语言作为一种结构化的 ...

  4. delegate 集成在类中,还是单独写在.h文件中?

    转:http://stackoverflow.com/questions/11382057/declaring-a-delegate-protocol There definitely are sub ...

  5. string.h文件中函数用法

    下面为string.h文件中函数的详细用法: strcpy函数名:strcpy功 能: 拷贝一个字符串到另一个用 法: char *strcpy(char *destin, char *source) ...

  6. 最新版的stm32f1xx.h文件中取消了u8, u16, u32的类型定义

    使用芯片stm32f103zet6和stm32l151c8t6,在移植程序时发现,编译器提示u8未定义: 在Keil MDK 开发环境里,st定义无符号32位整形数据有很多种表示方法: 1 unsig ...

  7. 多个".h"文件中声明及定义 全局变量和函数

    一.".h"文件必须以如下格式书写 例:文件<CZ_efg_hi.h"> ------------文件内容----------- #ifndef CZ_Efg ...

  8. VBA/VBScript提取Word(*.doc)文件中包含的图片(照片)

    VBA/VBScript提取Word(*.doc)文件中包含的图片(照片)   要处理的人事简历表是典型的Word文档,其中一人一份doc,里面包含有个人的照片,如果要把里面的照片复制出来就比较麻烦了 ...

  9. C++编译错误 --- 成员函数定义在 .h 文件中出现重定义错误(Error LNK 2005)

    今天写了一个简单的类,定义在 .h 文件中, 类很简单就将其成员函数定义在了一起(class类后面).运行的时候出现了如下图所示的编译错误(error LNK2005) 查资料,大部分都是说需要加上 ...

随机推荐

  1. ural 1091. Tmutarakan Exams 和 codeforces 295 B. Greg and Graph

    ural 1091 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1091 题意是从1到n的集合里选出k个数,使得这些数满足gcd大于1 ...

  2. cloud-utils cloud-utils-growpart cloud-init

  3. unexpected error ConnectionError object has no attribute

    unexpected error ConnectionError object has no attribute

  4. Emmet:一个Html/Css快速编辑神器的插件

    一.介绍:Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度 二.使用 ...

  5. PAT 07-图6 旅游规划 (25分)

    有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...

  6. 分布式助手Zookeeper(二)

    分布式助手Zookeeper(二)博客分类: Zookeeper zookeeperzookeeper的安装和配置观察者observer 散仙在上篇文章介绍了,zookeeper的一系列基础知识,如果 ...

  7. 两个select级联操作实例(教师职称类型与职称)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  8. javascript默认中文(汉字/标点)长度均为1的解决

    javascript默认中文(汉字/标点)长度均为1 与后台(java)不一致, function calculate(str) { //var str="你好,哈哈哈000111lll&q ...

  9. android105 jni概念

    JNI(Java Native Interface,JAVA原生接口) ,通过JNIjava代码可以调用C代码,JNI在安卓中用的很多.安卓中的框架层就是用过JNI访问类库层的.Iphone是用C/C ...

  10. C# - 集合类 - 集合类型

    Stack类 ns:System.Collections 此类模仿了一个简单的先进后出(LIFO)的集合 它实现了ICollection接口 可以通过三种方式创建Stack类对象 Stack stac ...