Prise en charge de la plate-forme
*********************************

Le module "asyncio" est conçu pour être portable, mais certaines
plates-formes présentent des différences et des limitations subtiles
en raison de l'architecture et des capacités sous-jacentes des plates-
formes.


Toutes plateformes
==================

* "loop.add_reader()" et "loop.add_writer()" ne peuvent pas être
  utilisées pour surveiller les entrées-sorties de fichiers.


Windows
=======

**Code source :** Lib/asyncio/proactor_events.py,
Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py

======================================================================

Modifié dans la version 3.8: sous Windows, "ProactorEventLoop" est
désormais la boucle d'événements par défaut.

Aucune boucle d'événements sous Windows ne prend en charge les
méthodes suivantes :

* "loop.create_unix_connection()" and "loop.create_unix_server()" are
  not supported. The "socket.AF_UNIX" socket family is specific to
  Unix.

* "loop.add_signal_handler()" et "loop.remove_signal_handler()" ne
  sont pas prises en charge.

"SelectorEventLoop" a les limitations suivantes :

* "SelectSelector" est utilisée pour attendre les événements de
  connecteur (*sockets*) : elle prend en charge les connecteurs et est
  limitée à 512 connecteurs.

* "loop.add_reader()" et "loop.add_writer()" n'acceptent que les
  descripteurs de connecteur (par exemple, les descripteurs de tube
  fichier ne sont pas pris en charge).

* Les tubes ne sont pas pris en charge, donc les méthodes
  "loop.connect_read_pipe()" et "loop.connect_write_pipe()" ne sont
  pas implémentées.

* Les sous-processus ne sont pas pris en charge, c'est-à-dire que les
  méthodes "loop.subprocess_exec()" et "loop.subprocess_shell()" ne
  sont pas implémentées.

"ProactorEventLoop" a les limitations suivantes :

* Les méthodes "loop.add_reader()" et "loop.add_writer()" ne sont pas
  prises en charge.

La résolution de l'horloge monotone sous Windows est généralement
d'environ 15,6 millisecondes. La meilleure résolution est de 0,5
milliseconde. La résolution dépend du matériel (disponibilité de HPET)
et de la configuration de Windows.


Prise en charge des sous-processus sous Windows
-----------------------------------------------

Sous Windows, la boucle d'événements par défaut "ProactorEventLoop"
prend en charge les sous-processus, contrairement à
"SelectorEventLoop".

La fonction "policy.set_child_watcher()" n'est pas non plus prise en
charge, car "ProactorEventLoop" a un mécanisme différent pour
surveiller les processus enfants.


macOS
=====

Les versions modernes de macOS sont entièrement prises en charge.

-[ macOS ≤ 10.8 ]-

Sur macOS 10.6, 10.7 et 10.8, la boucle d'événements par défaut
utilise "selectors.KqueueSelector", qui ne prend pas en charge les
périphériques de caractères sur ces versions. La "SelectorEventLoop"
peut être configurée manuellement pour utiliser "SelectSelector" ou
"PollSelector" pour prendre en charge les périphériques de caractères
sur ces anciennes versions de macOS. Par exemple :

   import asyncio
   import selectors

   selector = selectors.SelectSelector()
   loop = asyncio.SelectorEventLoop(selector)
   asyncio.set_event_loop(loop)
