Una connessione SQLServer può essere condivisa da più attività eseguite in parallelo, ad es. discussioni in un programma C # o richieste in un app server. Ma la maggior parte degli scenari di utilizzo richiederebbe la sincronizzazione dell'accesso alla connessione. Un'attività dovrà attendere la connessione se un'altra attività lo sta utilizzando. Quando crei un meccanismo di connessione condivisa che non si rompe o non diventa un vincolo di prestazioni per le tue attività parallele, probabilmente hai creato un pool di connessioni.
Un altro modo per vederlo è, sì, è possibile condividere un pool di connessioni tra una serie di thread e lasciare che il pool di connessioni gestisca le connessioni di dispensazione e la pulizia dello stato della connessione. L'accesso ai dati .net di Microsoft ha avuto un pooling di connessioni molto efficiente da 3 a 4 anni fa, quando l'ho usato per l'ultima volta. Con il pooling delle connessioni non è necessario dedicare molto tempo extra all'apertura e alla riapertura delle connessioni. Non è necessario mantenere aperte più connessioni di quelle che è effettivamente necessario utilizzare in una grande applicazione di lunga durata. Riutilizzi le connessioni quando sono disponibili e apri automaticamente una nuova connessione quando necessario, chiudendole automaticamente quando non sono più necessarie, ad es. dopo un periodo di inattività.
Il pool di connessioni potrebbe essere una buona risposta. Basta tenere una connessione per ogni attività può essere una buona risposta.