Nel mondo dei computer, un problema del barbiere addormentato è il nome fantasioso usato per identificare una situazione in cui i processi sono attualmente in uno schema di attesa in attesa di risorse per raggiungere un qualche tipo di risoluzione. Il riferimento al barbiere addormentato ha a che fare con la mancanza di produttività che sperimenta un barbiere quando non ci sono clienti nel negozio in attesa di un taglio di capelli. Questo gioca sul vecchio stereotipo di un barbiere che dorme sulla sua sedia fino a quando un cliente entra dalla porta in cerca di un taglio di capelli. Secondo questa analogia, il barbiere si sveglia immediatamente dal suo sonno quando viene svegliato da un cliente, fornisce il taglio di capelli e torna prontamente a dormire una volta che il cliente è uscito dalla porta, per poi svegliarsi quando il cliente successivo entra. In termini di funzione del computer, questo si riferisce a risorse che sono in uno stato dormiente fino a quando non sono necessarie per un processo, e poi tornano nello stesso stato fino all’avvio del processo successivo, creando un intervallo tra i processi che potrebbe ridurre l’efficienza complessiva.
L’immagine usata per descrivere il problema del barbiere addormentato ha a che fare con un barbiere che ha solo un cliente occasionale, che di solito finisce con uno prima che arrivi il cliente successivo, o almeno arriva al secondo cliente con solo un minimo di attesa. Finché il numero di clienti in attesa in coda è ridotto al minimo e nessuno si spazientisce ed esce, si può dire che non ci sono problemi e il barbiere solitario tiene il passo con la domanda. Allo stesso tempo, se il negozio viene inondato di clienti che richiedono tagli di capelli ma il barbiere è già impegnato, allora c’è un’alta probabilità che alcuni di quei clienti non aspetteranno e se ne andranno.
Lo stesso tipo di problema del barbiere addormentato può essere visto con vari tipi di situazioni di elaborazione che coinvolgono la tecnologia informatica che necessita di una sorta di aggiornamento per gestire un aumento della domanda. Ad esempio, se il call center di un’azienda è inondato di chiamate in entrata da clienti che richiedono aiuto ora, ma il numero di rappresentanti del servizio clienti non è sufficiente per tenere il passo con la domanda, una parte di quei clienti abbandonerà le chiamate e possibilmente cercare una relazione con un concorrente. Allo stesso modo, all’interno dei sistemi di elaborazione di una rete di computer, se le risorse dedicate all’elaborazione tempestiva dei compiti sono insufficienti per il numero di compiti coinvolti, alcuni di quei processi incorreranno in quello che è noto come timeout, e forse anche terminare. Il risultato finale è una perdita di efficienza che può a sua volta rallentare altri processi programmati per seguire quelli scaduti.
Non esiste un modo giusto per gestire un problema del barbiere addormentato. A seconda della configurazione delle apparecchiature informatiche utilizzate, potrebbero esserci modi per implementare nuovi approcci che aiutino a riallocare le risorse in modo che le attività possano essere gestite con maggiore efficienza. Ad esempio, la riconfigurazione dei servizi di assistente automatico per un call center potrebbe far risparmiare tempo instradando automaticamente la chiamata successiva nella coda di attesa a un rappresentante senza la necessità che tale rappresentante prenda manualmente un’altra linea in attesa. Proprio come l’aggiunta di ulteriori barbieri a un negozio rende più facile gestire i clienti che cercano un taglio di capelli, l’aggiunta di più risorse in termini di linee in entrata e postazioni di servizio clienti per gestire il volume delle chiamate renderebbe anche più facile gestire il volume senza innescare molti ritardi . Allo stesso modo, espandere le risorse su una rete per supportare funzioni e processi aggiuntivi può anche aiutare a ridurre al minimo un problema di barbiere dormiente e consentire al sistema di funzionare in modo più efficiente.