# Підтримка платформи

Модуль `asyncio` розроблений як портативний, але деякі платформи мають незначні відмінності та обмеження через базову архітектуру та можливості платформ.

## Усі платформи

- `loop.add_reader()` і `loop.add_writer()` не можна використовувати для моніторингу файлового введення/виведення.

## вікна

Вихідний код: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py

Змінено в версії 3.8: У Windows `ProactorEventLoop` тепер є циклом подій за замовчуванням.

Усі цикли подій у Windows не підтримують такі методи:

- `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()` і `loop.remove_signal_handler()` не підтримуються.

`SelectorEventLoop` має такі обмеження:

- `SelectSelector` використовується для очікування подій сокетів: він підтримує сокети та обмежений 512 сокетами.

- `loop.add_reader()` і `loop.add_writer()` приймають лише дескриптори сокетів (наприклад, дескриптори каналів файлів не підтримуються).

- Канали не підтримуються, тому методи `loop.connect_read_pipe()` і `loop.connect_write_pipe()` не реалізовані.

- Підпроцеси не підтримуються, тобто методи `loop.subprocess_exec()` і `loop.subprocess_shell()` не реалізовані.

`ProactorEventLoop` має такі обмеження:

- Методи `loop.add_reader()` і `loop.add_writer()` не підтримуються.

The resolution of the monotonic clock on Windows is usually around 15.6 milliseconds. The best resolution is 0.5 milliseconds. The resolution depends on the hardware (availability of HPET) and on the Windows configuration.

### Підтримка підпроцесів у Windows

У Windows типовий цикл подій `ProactorEventLoop` підтримує підпроцеси, тоді як `SelectorEventLoop` не підтримує.

Функція `policy.set_child_watcher()` також не підтримується, оскільки `ProactorEventLoop` має інший механізм для спостереження за дочірніми процесами.

## macOS

Сучасні версії macOS повністю підтримуються.

macOS <= 10.8

У macOS 10.6, 10.7 і 10.8 цикл подій за замовчуванням використовує `selectors.KqueueSelector`, який не підтримує символьні пристрої в цих версіях. `SelectorEventLoop` можна вручну налаштувати на використання `SelectSelector` або `PollSelector` для підтримки символьних пристроїв у цих старіших версіях macOS. Приклад:

    import asyncio
    import selectors

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