title: Active Template Library
text: # Active Template Library
  
  ATL, sigla di Active template library (inglese per "Libreria di template attivi"), è una libreria di classi C++ (prevalentemente template) sviluppata da Microsoft e distribuita insieme al compilatore C++ di Microsoft stessa.
  
  ATL permette di creare rapidamente applicazioni di un certo livello, includendo in particolare un eccellente supporto a tecnologie ad oggetti come Component Object Model ed ActiveX. I componenti e le applicazioni sviluppate sfruttando ATL risultano solitamente più veloci dei corrispettivi che si appoggiano invece alle Microsoft Foundation Classes, poiché ATL sfrutta a fondo lo standard C++, al quale si sta adeguando il compilatore C++ di Microsoft, e le estensioni proprietarie allo stesso ideate da Microsoft.
  
  Fra le peculiarità di ATL, spiccano delle implementazioni standard e di semplice impiego delle principali classi COM, fra cui IUnknown, IClassFactory, IClassFactory2, e IDispatch; è presente inoltre un supporto completo per la creazione di interfacce duali (che implementano cioè sia IUnknown che IDispatch), classi di enumerazione standard COM, ascolto e generazione di eventi (connection points), e molto altro.
  
  ATL consente, tra l'altro, di creare codice adatto all'esecuzione parallela, permettendo la scelta fra thread singolo (single-threaded), gruppo di oggetti per thread (apartment-model) o thread multipli (free-threaded), o una combinazione di questi ultimi.
  
  