簡體   English   中英

Ruby的Net :: HTTP線程是否安全?

[英]Is Ruby's Net::HTTP threadsafe?

Ruby的Net :: HTTP線程是否安全?

(除了明確說明的version_1_1和version_1_2方法之外)

我不會指望它。

在2008年, matz寫道

對於MRI(1.8.x)和YARV(1.9.x),每個C實現的方法都受GIL(全局解釋器鎖)保護,因此您不必擔心。 但它可能取決於每個實施。

Net :: HTTP在stdlib中,這意味着它不是用C實現的(至少在C中沒有完全實現)。 我假設matz關於GIL的注釋今天仍然正確,這意味着GIL不會放在Net :: HTTP上。 因此,我懷疑它是線程安全的。

遺憾的是,我沒有在當前版本的Ruby的文檔中找到確切的證據,盡管我覺得在jruby中也有點值得提及這一點:

至少這些類[stdlib中的核心類和類]不被認為是線程安全的,如果你打算與其他操作同時改變它們,你會想要引入鎖定(例如使用Mutex):String,Array,Hash和從它們派生的任何數據結構。

我覺得最好通過在Net :: HTTP周圍添加鎖或使用線程安全替代方案來保證安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM