可重入和執行緒安全函式

2021-10-14 08:00:33 字數 297 閱讀 7522

一直對於可重入和執行緒安全函式都是很模糊,突然看了一些文章覺得自己很明白了,但是也不知道是不是還有什麼我不知道的,那就先把我的一些見解寫下來吧。

對於執行緒安全函式呢,我認為它針對的物件僅僅是不同執行緒下呼叫的函式,只要在不同執行緒下呼叫同乙個函式,能夠保證這個函式的功能能正常實現,那麼這個函式就是執行緒安全的函式。

而對於可重入函式呢,我認為它針對的物件是單執行緒和多執行緒,因此在單執行緒下,用鎖對資料進行保護的執行緒安全函式就不是可重入函式,它只是理論上的不可重入函式,因為同一執行緒下對同一互斥量加鎖,不解鎖,再加鎖,會造成死鎖。因此可重入函式只能使用區域性變數。

執行緒安全和可重入函式

執行緒安全 當多個併發執行緒執行同乙個函式,我們都能得到正確的返回值。當多個執行緒併發的呼叫乙個函式。如果對全域性資料或者靜態資料在不加任何鎖以及安全性的處理情況下,就會對多次修改資料的錯誤。比如我正在願意個執行緒裡處理乙個全域性變數的 1 正減完。結果還沒有返回,就被另乙個執行緒切出去了,而那個執...

執行緒安全和可重入函式

執行緒安全 乙個函式稱為執行緒安全,當且僅當被多個併發執行緒反覆呼叫時,它一直產生正確的結果。如果乙個函式不是執行緒安全的,我們就說它是執行緒不安全的。以下我們定義4種,執行緒不安全的函式 第1類 不保護共享變數的函式,比如對乙個全域性變數多個執行緒操作,產生錯誤結果 解決方法 利用像p,v操作這樣...

執行緒安全和可重入函式

簡單來說,在執行環境一致的情況下,多次執行同乙個多執行緒程式時,所有執行緒結果和單執行緒執行得到的結果一致時,則可以說該程式的執行緒是安全的。反之,則為執行緒不安全。引起執行緒安全問題的原因 通常都是由全域性變數及靜態變數的。若每個執行緒中對全域性變數 靜態變數只有讀操作,而無寫操作,一般來說,這個...