Domanda

Sappiamo che una singola istanza dell'applicazione può utilizzare più core e persino più processori fisici. Con il cloud e il cluster computing o altri scenari speciali, non so se una singola posizione può essere eseguita su più computer o su più istanze del sistema operativo.

Questo è importante per me perché, oltre a essere considerato una cattiva programmazione, utilizzo alcune variabili statiche (come in C #) (globali), e il mio programma probabilmente avrà un comportamento inaspettato se quelle variabili diviso tra computer.

Aggiorna Sarò più specifico: sto scrivendo un'applicazione .NET, che ha una variabile che conta il numero di connessioni IP attive, per evitare che il numero di connessioni non lo faccia superare un limite per computer. Sono preoccupato se distribuisco quell'applicazione in un host di cloud computing, se avrò un'istanza della variabile per computer.

È stato utile?

Soluzione

Se vuoi imparare a realizzare un tale scenario (una singola istanza su più computer), penso che dovresti leggere alcuni articoli su MPI .

  

è diventato uno standard di fatto per   comunicazione tra processi che   modella un programma parallelo in esecuzione su a   sistema di memoria distribuita.

Per quanto riguarda le tue preoccupazioni: ovviamente, dovrai in qualche modo cambiare consapevolmente il tuo programma per eseguirlo come un'istanza su più computer. Altrimenti, nessuna condivisione ovviamente ha luogo e come Timido scrive , non c'è nulla di cui preoccuparsi. Questo genere di cose non accadrebbe automaticamente.

Altri suggerimenti

Quale ambiente di programmazione (linguaggio) stai usando? Dovrebbe definire esattamente cosa " statico " si intende. Molto probabilmente non consente la condivisione di informazioni tra computer diversi se non attraverso canali espliciti come MPI o RPC.

Tuttavia, ambienti di alto livello astratti possono essere progettati per nascondere il concetto di "esecuzione su più computer". da te interamente. È concepibile progettare una macchina virtuale che può essere eseguita su un cluster e condividerà effettivamente variabili statiche tra diverse macchine fisiche, ma in questo caso il programma è in esecuzione su una singola macchina virtuale e se dovrebbe essere eseguito su una o più macchine fisiche non fare alcuna differenza.

Se non riesci nemmeno a immaginare una situazione in cui ciò accade, perché ti preoccupi?

Di solito, ciò può accadere in uno scenario che coinvolge RPC di qualche tipo.

Beh, sì, c'è distcc. È il compilatore GCC distribuito.

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