Asynchrone E/A und asynchrone RPC
Asynchrone E/A-Vorgänge sind ein effizientes Mittel für einen einzelnen Thread, um mehrere E/A-Anforderungen gleichzeitig zu verwalten. Asynchroner RPC auf dem Server erfüllt einen ähnlichen Zweck für RPC-Anforderungen. In Windows-Versionen vor Windows Vista wird davon abgeraten, asynchrone E/A-Anforderungen von Serverprozeduren mithilfe von asynchronem RPC zu veröffentlichen. In Windows Vista und höheren Versionen von Windows werden asynchrone E/A-Anforderungen, die einem E/A-Vervollständigungsport zugeordnet sind, jedoch von asynchronem RPC unterstützt.
Vor Windows Vista kann ein asynchroner Remoteprozeduraufruf abgeschlossen werden, bevor die asynchrone E/A-Anforderung abgeschlossen ist. Wenn der asynchrone Aufruf abgeschlossen ist, kann sein Thread beendet werden, wenn die RPC-Runtime feststellt, dass genügend Threads zur Verfügung stehen, um die erwartete Workload zu warten. Das System bindet alle E/A-Anforderungen an den Thread, der sie initiiert. Wenn der Thread beendet wird, werden alle E/A-Anforderungen, die für diesen Thread ausstehen, abgebrochen. Ausstehende E/A-Anforderungen können nicht in einen anderen Thread verschoben werden.
Daher können Anwendungsdesigner, die Auf Versionen von Windows vor Windows Vista abzielen, entweder synchrone E/A in Serverprozeduren verwenden oder alle Anforderungen, die asynchrone E/A umfassen, an Prozeduren weiterleiten, die in einem Threadpool ausgeführt werden, den die Anwendung verwaltet. Die Windows-API bietet Funktionen für die Threadpoolverwaltung. Weitere Informationen finden Sie unter Prozess- und Threadfunktionen.