Если кто не знает, Jonathan Wakely — сотрудник RedHat и основной контрибьютор libstdc++. Т.е. абсолютно большая часть С++11/С++14/С++17 — это его труд.
Очень грамотный человек, очень дружелюбный и открытый к общению. Его профиль можно найти как на SO, так и на LI.
Здравствуйте, -MyXa-, Вы писали:
MX>Серьёзно, не понимаю, зачем они это делают.
Зачем делают что? Пеереименовывают io_service в io_context?
Да, это очень серьезный вопрос и он достоен особено глубоко анализа.
Здравствуйте, Vamp, Вы писали:
V>Уродливый дизайн bsd-сокетов никуда не делся.
А какое отношение к этому имеют компилятор и стандартная библиотека С++?
Здравствуйте, Tasheehoo, Вы писали:
T>Здравствуйте, -MyXa-, Вы писали:
MX>>Серьёзно, не понимаю, зачем они это делают. T>Зачем делают что? Пеереименовывают io_service в io_context?
В сообщении, на которое ты отвечаешь, есть вопросительное предложение. Повествовательное же, обычно, не требует ответа.
Boost обновляется довольно часто (вроде, к декабрю обещают 1.60) и реализует все фичи из Boost-а, баги его более-менее известны. Стандарт обновляется медленно, реализует не все фичи из Boost-а (к примеру, с Boost.ASIO можно и фалы читать асинхронно, не а только сеть) и на каких платформах будут какие баги (или различия в поведении) — ещё не известно. std::list::size — какая сложность? Дюжина лет потребовалось, чтобы понять, что std::string должен хранить непрерывный буфер. Да даже std::tuple у них вышел не очень, а тут целый <net>.
Скажем, смогу я с этим <net> асинхронно резолвить сразу несколько (напр., 100 тыс.) хостов? Или будет как в ASIO — асинхронно, но строго по одному за раз.
Копипастить из буста — это каждый может, а, например, рефлексию времени компиляции — тут сразу паника и суматоха.
Если не поможет, будем действовать током... 600 Вольт (C)
> Скажем, смогу я с этим <net> асинхронно резолвить сразу несколько (напр., 100 тыс.) хостов? Или будет как в ASIO — асинхронно, но строго по одному за раз.
Асинхронно резолвить не сможешь никогда, потому что резолвинг — это не просто DNS запрос. Есть еще /etc/hosts и что угодно, что реализуется libNSS (а там могут быть и запросы к LDAP и libasral.so и ни одна из этих библиотек не гарантирует асинхронную реализацию). Поэтому разрешение адреса по имени — это вызов gethostbyname и более современных аналогов в отдельном потоке, например, через std::async() (примерно так, кстати, boost'овый асинхронный резолвер и делает, так что его можно реализовать руками так же эффективно).