localtime與localtime_r


在寫代碼的時候,經常會用到讀取系統時間的函數。很多人都會調用localtime函數來將時間轉換本地時間,但是大家往往會忽略了一點,localtime函數不是線程安全的。如果在多線程里調用localtime函數,很可能會出現問題。

struct tm *localtime(const time_t *clock);

這個函數在返回的時候,返回的是一個指針,實際的內存是localtime內部通過static申請的靜態內存,所以通過localtime調用后的返回值不及時使用的話,很有可能被其他線程localtime調用所覆蓋掉

    多線程應用里面,應該用localtime_r函數替代localtime函數,因為localtime_r是線程安全的。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM