localtime函數(shù)用法 為什么localtime函數(shù)是線程不安全的?
為什么localtime函數(shù)是線程不安全的?根據(jù)Localtime函數(shù)的原型定義進行分析struct TM*Localtime(const time)函數(shù)返回struct TM指針,在函數(shù)描述中不要求
為什么localtime函數(shù)是線程不安全的?
根據(jù)Localtime函數(shù)的原型定義進行分析
struct TM*Localtime(const time)函數(shù)返回struct TM指針,在函數(shù)描述中不要求是自由的,證明TM對象不是malloc或new。那么TM必須是Localtime函數(shù)中的全局變量或局部靜態(tài)變量。
這樣的變量在多線程訪問時會出現(xiàn)問題。第一個線程在返回Localtime之前更改變量的值,第二個線程再次更改變量,依此類推。這樣,當?shù)谝粋€線程實際返回時,值被更改了很多次,這是一個典型的函數(shù)重入問題。
因此,Localtime函數(shù)線程不安全。
時間函數(shù)gmtime和localtime有什么區(qū)別?
1. 本地時間是從1970-1-1零點到當前時間系統(tǒng)的偏移秒數(shù),轉換為本地時間。gmtime函數(shù)轉換的時間是UTC時間,沒有時區(qū)轉換。
2. 注:此函數(shù)得到的TM結構時間為日歷時間。
3. 用法:structtm*本地時間(consttime) uT*時鐘
4。返回值:返回指向TM結構的指針。TM結構是一種時間結構。H存儲時間量(月、年、日等)
5