Non necessariamente. Dipende da cosa intendi per "sicurezza del filo".
Supponiamo ad esempio che condividano un Entity Framework, dica "db" e funzionino su qualche tabella. dal momento che hai chiamato il controller "MyController" consente di chiamare questo db.MyTable Ogni richiesta evoca una diversa istanza di MyController. Finora, thread sicuro. Ogni controller crea un'istanza di MyEntities db = new MyEntities(); Finora thread sicuro. ma poiché db.MyTable è di tipo IEnumerable <MyTable> interagiscono tra loro. Supponiamo che lavorano sulla stessa entità nel database (senza serrature), dicono db.MyTable [0] - faranno sovrascrivere l'altro ("ultimo di salvare vince").
3 utenti del sito avranno tre puntatori indipendenti (nello stack) che puntano allo stesso posto (nel database). Non è un problema di thread. È un problema di blocco dei dati.
Sei corretto che le istanze del controller sono per richiesta – roryf
Un'istanza del controller è per richiesta, lo rende thread-safe? O c'è un modo in cui un'istanza di un controller può essere utilizzata da più thread nella stessa richiesta? Voglio assicurarmi che fornisca al mio controller una variabile privata, che sia thread-safe. – xr280xr
Un membro di istanza di un'istanza controller dovrebbe essere thread-safe, per quanto ne so. Ma assicurati che tutte le risorse utilizzate dal controller siano effettivamente thread-safe. Di nuovo, si noti che non so _know_ che l'istanza del controller è per richiesta. –