Le estensioni del server ISAPI sono le dll. Essi lavorano nello spazio di processo del server. Richieste simultanee fece un'estensione ISAPI vengono gestite da thread separati. Di conseguenza, il codice in un'estensione ISAPI deve essere thread-safe.
Situazione
Metodi di accesso del database che utilizzano COM per gestire l'inizializzazione non sono thread-safe. Il problema specifico si trova nel inizializzare le librerie COM in un thread e poi usando un altro thread per accedere ai dati. L'implementazione corrente di driver ODBC Desktop rientra in questa categoria. Questi driver (dBase, Microsoft Visual FoxPro, Microsoft Access, Microsoft Excel, paradosso e testo) forniti con Visual C++, utilizzare il motore di database Microsoft Jet 3.0, che non è thread-safe. Inoltre, gli oggetti DAO (Data Access) è una API basata su COM, in modo non viene eseguito in modo affidabile nell'ambiente multithread di un'estensione ISAPI.
Ci possono essere altri metodi di accesso database che non sono thread-safe.
Risoluzione
Per accedere a un database da un'estensione del server ISAPI, utilizzare un driver ODBC che è stato progettato e testato per l'uso con multithreading. Ne sono un esempio i driver ODBC di Microsoft per Microsoft SQL Server 6. x.
Le classi di database ODBC MFC sono thread-safe come di MFC 4.2. Assicurarsi che qualsiasi driver di database ODBC che utilizzare queste classi anche è thread-safe.
Le applicazioni che utilizzano le classi di database ODBC MFC precedenti alla versione MFC 4.2 necessitano avere il codice di database collocato all'interno di una sezione critica per assicurare che un solo thread accede al codice di database MFC alla volta. Per ulteriori informazioni, vedere la classe CCriticalSection.
Attualmente, le classi di database DAO MFC non sono thread-safe, poiché utilizzano gli oggetti basati su COM DAO.
&Note tecniche per numero |nbsp; Note tecniche per la categoria