Ruby's Net :: HTTP threadsafe?Ruby's Net :: HTTP threadsafe?
(A parte i metodi version_1_1 e version_1_2 che si dice in modo esplicito non sono)
Ruby's Net :: HTTP threadsafe?Ruby's Net :: HTTP threadsafe?
(A parte i metodi version_1_1 e version_1_2 che si dice in modo esplicito non sono)
non vorrei contare su di esso.
Nel 2008, matz wrote:
per la risonanza magnetica (1.8.x) e YARV (1.9.x), ogni C implementato metodi sono protetto da GIL (Global Interpreter Lock), in modo che don' t necessario per preoccuparsi. Ma potrebbe dipendere da ogni implementazione.
Net: HTTP è in stdlib, il che significa che non è implementato in C (o almeno non completamente implementato in C). Presumo che la nota di matz su GIL sia ancora corretta oggi, il che implicherebbe che GIL non venga inserito su Net :: HTTP. Pertanto, dubito che sarebbe infallibile.
non ho purtroppo trovato la prova definitiva nella documentazione per la versione corrente di Ruby, anche se mi sento che è anche la pena menzionare questo bit da Concurrency in jruby:
Almeno queste classi [classi principali e classi in lo stdlib] è non considerato thread-safe, e se si intende mutarlo contemporaneamente ad altre operazioni si vorrà introdurre il blocco (ad es. con Mutex): String, Array, Hash e qualsiasi struttura dati derivata da loro .
sento che sarebbe meglio andare sul sicuro da entrambe le serrature aggiungendo intorno Net :: HTTP o utilizzando un threadsafe alternativa.
Come aggiungeresti i blocchi @nick – bcackerman
Dipende dal tuo caso d'uso, probabilmente dovrai trattare ogni richiesta come atomica. Se hai bisogno di aiuto, apri una nuova domanda o usa semplicemente un'altra libreria che ha dimostrato di essere protetta dai rischi. –
Supponendo che tu non sia su MacRuby o JRuby, è importante? Il runtime non è comunque realmente multithread, può essere eseguito solo un thread alla volta. – Theo
Non importa? Quindi, se net: http mantiene uno stato globale per la tua connessione e il runtime commuta avanti e indietro tra due thread, nulla andrà storto? Non so se net: http è thread-safe o no, ma so che la tua risposta è sbagliata. – bridiver