Domanda

Sto lavorando a un progetto di integrazione API in Ruby ed ero sul punto di creare un metodo di classe per un po 'segui ciò che Rails fa con i metodi di ricerca, ma mi sono fermato a corto di farlo perché mi riguarda potrei introdurre una gara condizioni.

I non sarebbe memorizzare nulla all'interno delle variabili membro, basta istanziare oggetti con il metodo della classe e effettuare le chiamate API esterni, in modo tutto sarebbe ambito locale (all'interno del metodo della classe). Ancora, non v'è un potenziale di avere una condizione come più fili passano attraverso questo metodo di classe? Come le rotaie metodi Class Finder evitare questo? O sono qualcosa che non comprensione a un livello più fondamentale qui?

È stato utile?

Soluzione

E 'possibile che non stai capire come funzionano le discussioni, o che non stai descrivendo una parte del problema che sarebbe la fonte di una race condition.

Semplicemente chiamando un metodo in due fili diversi non è sufficiente per provocare una condizione di competizione. A meno che non ci sia una risorsa condivisa che potrebbe essere in uno stato incoerente perché un altro thread è nel bel mezzo di usarlo, una condizione di competizione non è davvero un problema.

Se tutte le variabili sono scope al metodo, quindi l'unica fonte di una gara che mi può ricavare dalla tua descrizione del problema potrebbe essere chiamate API. Se è possibile che, mentre un thread è nel mezzo di accesso API, un altro viene attraverso e si riavvia qualsiasi interazione stava succedendo, e che sarebbe problematico, allora si potrebbe avere un problema razziale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top