真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

函數(shù)中靜態(tài)局部變量的初始化過程是線程安全的嗎?-創(chuàng)新互聯(lián)

問題展開限定一下范圍:如下函數(shù)定義中,static 聲明局部靜態(tài)變量,Logger 的實(shí)例創(chuàng)建過程、以及外部獲取 Logger 的這個實(shí)例的過程,是否是線程安全的?

創(chuàng)新互聯(lián)建站于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站設(shè)計網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元江南做網(wǎng)站,已為上家服務(wù),為江南各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
Logger GetLogger() {
    static Logger inst;
    return inst;
}

參考 Stack Overflow 的回答:

c++ - Is local static variable initialization thread-safe in C++11? - Stack Overflow

從這里的回答來看,是線程安全的,從標(biāo)準(zhǔn)層面保證的局部靜態(tài)變量在第一次調(diào)用的時候,執(zhí)行初始化過程,并行執(zhí)行需要等待初始化完成。

那么這個初始化,我認(rèn)為就是類實(shí)例的構(gòu)建過程了。那么至少 Logger inst 的構(gòu)建過程是線程安全的,用來做單例模式的時候,也是保證了線程安全的。

示例一個以這種方式來寫的單例模式:

class Logger {
public:
    static Logger* GetInsance() {
        static Logger inst;
        return &inst;
    }
private:
    Logger() {}
    explicit Logger(const Logger&) = delete;
};

額外的,下面也提到了,不要在這個初始化過程中引入死鎖。

就個人建議,如果使用這種方式來寫代碼,那么就盡量減少這個實(shí)例的依賴項(xiàng),也盡量不要在這個過程中使用鎖,這樣代碼邏輯簡單,也不容易出錯。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)站標(biāo)題:函數(shù)中靜態(tài)局部變量的初始化過程是線程安全的嗎?-創(chuàng)新互聯(lián)
URL標(biāo)題:http://weahome.cn/article/cdcigd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部