Un port de finalització d'entrada/sortida (en anglès, input/output completion port, sovint abreujat IOCP) és un mecanisme de Microsoft Windows per gestionar operacions d'entrada/sortida asíncrona mitjançant una cua de notificacions. Permet que una aplicació associï diversos identificadors d'E/S, com fitxers, canonades o sòcols, a un mateix port. Quan una operació asíncrona acaba, el sistema afegeix un paquet de finalització a la cua del port perquè un fil treballador el pugui processar.

Funcionament Un programa pot crear un port amb la funció CreateIoCompletionPort i associar-hi un o més identificadors compatibles amb E/S superposada (overlapped I/O). Els fils treballadors esperen notificacions amb GetQueuedCompletionStatus. Si no hi ha cap paquet disponible, el fil queda blocat fins que una operació associada al port es completa.

Cada paquet de finalització pot incloure informació sobre l'operació acabada, l'identificador associat i una clau definida per l'aplicació. D'aquesta manera, un conjunt reduït de fils pot atendre moltes operacions pendents sense crear un fil per a cada connexió o petició. El port també té un valor de concurrència que limita quants fils poden processar paquets alhora.

Ús Els ports de finalització d'E/S són útils en servidors de xarxa i aplicacions que han de mantenir moltes operacions d'E/S simultànies. El model separa l'inici d'una operació asíncrona del tractament del seu resultat: el programa sol·licita l'operació, continua executant altres tasques i rep una notificació quan l'operació ha acabat.

Aquest mecanisme s'assembla conceptualment a altres sistemes de notificació d'esdeveniments, com epoll a Linux o kqueue en sistemes BSD, tot i que la seva interfície i el seu model intern són propis de Windows.

Limitacions IOCP requereix treballar amb les API específiques de Windows i amb identificadors compatibles amb E/S asíncrona. També cal dissenyar bé la bateria de fils, el valor de concurrència i el tractament d'errors, perquè una mala configuració pot reduir el rendiment o complicar el codi.

Referències

Categoria:Microsoft Windows Categoria:Enginyeria de programari