欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 有關(guān)線程安全 [打印本頁]

作者: 51黑tt    時間: 2016-3-5 23:48
標題: 有關(guān)線程安全
有關(guān)線程安全 1、可重入的概念
若一個程序或子程序可以安全的被并行執(zhí)行,則稱其為可重入(reentrant或re-entrant)的;即,當(dāng)該子程序正在運行時,可以再次進入并執(zhí)行它。若一個函數(shù)是可重入的,則該函數(shù):
不能含有靜態(tài)(全局)非常量數(shù)據(jù)。
不能返回靜態(tài)(全局)非常量數(shù)據(jù)的地址。
只能處理由調(diào)用者提供的數(shù)據(jù)。
不能依賴于單實例模式資源的鎖。
不能調(diào)用不可重入的函數(shù)。
與線程安全的關(guān)系
可重入與線程安全兩個概念都關(guān)系到函數(shù)處理資源的方式。但是,他們有一定的區(qū)別。可重入概念會影響函數(shù)的外部接口,而線程安全只關(guān)心函數(shù)的實現(xiàn)。
大多數(shù)情況下,要將不可重入函數(shù)改為可重入的,需要修改函數(shù)接口,使得所有的數(shù)據(jù)都通過函數(shù)的調(diào)用者提供。
要將非線程安全的函數(shù)改為線程安全的,則只需要修改函數(shù)的實現(xiàn)部分。一般通過加入同步機制以保護共享的資源,使之不會被幾個進程同時訪問。
因此,相對線程安全來說,可重入性是更基本的特性,它可以保證線程安全:即,所有的可重入函數(shù)都是線程安全的,但并非所有的線程安全函數(shù)都是可重入的。
2、
調(diào)用一個函數(shù)(假設(shè)該函數(shù)是正確的)操作某對象常常會使該對象暫時陷入不可用的狀態(tài)(通常稱為不穩(wěn)定狀態(tài)),等到操作完全結(jié)束,該對象才會重新回到完全可用的狀態(tài)。如果其他線程企圖訪問一個處于不可用狀態(tài)的對象,該對象將不能正確響應(yīng)從而產(chǎn)生無法預(yù)料的結(jié)果,如何避免這種情況發(fā)生是線程安全性的核心問題。

一般準則
  如果一個函數(shù)在其文檔中沒有特別注明具備線程安全性,則應(yīng)該認為它不具備。許多庫大量使用了內(nèi)部的靜態(tài)數(shù)據(jù),除非它是為多線程應(yīng)用所設(shè)計,否則要牢記其內(nèi)部數(shù)據(jù)可能沒有利用互斥量進行適當(dāng)?shù)谋Wo。類似,如果類的成員函數(shù)在其文檔中沒有特別注明對于多線程應(yīng)用是安全的話,則認為它不安全。兩個線程去操作相同的對象會引起問題,這是顯而易見的,然而,即使兩個線程去操作不同的物體依然會引起問題。出于多種原因,許多類使用了內(nèi)部靜態(tài)數(shù)據(jù)或者在多個看上去明顯不同的對象間共享實現(xiàn)細則,
  以下給出幾個一般準則:
  操作系統(tǒng)提供的API具備線程安全性
  POSIX線程標準要求C標準庫中的大多數(shù)函數(shù)具備線程安全性,少數(shù)例外會在C標準中注明。
  對于Windows提供的C標準庫,如果所使用的版本沒有問題,而且進行了正確的初始化,他們都是安全的。
  C++標準庫的線程安全性不是很明確,它在很大程度上依賴于使用的編譯器。標準模板庫線程安全性的SGI準則作為實際中的標準取得很大進展,但并不是統(tǒng)一的標準。








歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1