Asynchrone E/A und asynchroner RPC
Asynchrone E/A ist eine effiziente Möglichkeit für einen einzelnen Thread, mehrere E/A-Anforderungen gleichzeitig zu verwalten. Ein asynchroner RPC auf dem Server erfüllt einen ähnlichen Zweck für RPC-Anforderungen. In Versionen von Windows vor Windows Vista wird davon abgeraten, asynchrone E/A-Anforderungen von Serverprozesuren mit asynchronem RPC zu veröffentlichen. In Windows Vista und neueren Versionen von Windows werden asynchrone E/A-Anforderungen, die einem E/A-Abschlussport zugeordnet sind, jedoch von asynchronem RPC unterstützt.
Vor Windows Vista kann ein asynchroner Remoteprozeduraufruf abgeschlossen werden, bevor die asynchrone E/A-Anforderung abgeschlossen wird. Wenn der asynchrone Aufruf abgeschlossen ist, wird sein Thread möglicherweise beendet, wenn die RPC-Runtime entscheidet, dass genügend Threads verfügbar sind, um die erwartete Workload zu bedienen. Das System bindet alle E/A-Anforderungen an den Thread, der sie initiiert. Wenn der Thread beendet wird, werden alle für diesen Thread ausstehenden E/A-Anforderungen abgebrochen. Ausstehende E/A-Anforderungen können nicht in einen anderen Thread verschoben werden.
Daher können Anwendungsdesigner, die versionen von Windows vor Windows Vista als Ziel verwenden, entweder synchrone E/A in Serverprozesuren 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 stellt Funktionen für die Threadpoolverwaltung bereit. Weitere Informationen finden Sie unter Prozess- und Threadfunktionen.