Сообщение Re[4]: Сокеты и многопоточность от 04.08.2016 20:15
Изменено 04.08.2016 20:23 smeeld
Здравствуйте, b0r3d0m, Вы писали:
B>никак не говорит о том, как реализован конкретно boost::asio::ip::tcp::socket, и какие требования накладывает на своё использование в результате этого. Он может как требовать синхронизации, так и не требовать -- всё зависит от того, как автор(ы) библиотеки подошли к данному вопросу.
Никак он не реализован, это просто ООП-врайпер над сокетами libc. Упомянутый async_write-это обыкновенный write в неблокирующий дескриптор сокета, тот самый что выдаётся POSIX функцией socket (или что там в винде вместо этого), и последующий мониторинг событий на этом сокете в потоке io_service::run. Все правила работы с POSIX сокетами и из свойства естественным образом переносятся на сокеты в boost::asio.
B>никак не говорит о том, как реализован конкретно boost::asio::ip::tcp::socket, и какие требования накладывает на своё использование в результате этого. Он может как требовать синхронизации, так и не требовать -- всё зависит от того, как автор(ы) библиотеки подошли к данному вопросу.
Никак он не реализован, это просто ООП-врайпер над сокетами libc. Упомянутый async_write-это обыкновенный write в неблокирующий дескриптор сокета, тот самый что выдаётся POSIX функцией socket (или что там в винде вместо этого), и последующий мониторинг событий на этом сокете в потоке io_service::run. Все правила работы с POSIX сокетами и из свойства естественным образом переносятся на сокеты в boost::asio.
Re[4]: Сокеты и многопоточность
Здравствуйте, b0r3d0m, Вы писали:
B>никак не говорит о том, как реализован конкретно boost::asio::ip::tcp::socket, и какие требования накладывает на своё использование в результате этого. Он может как требовать синхронизации, так и не требовать -- всё зависит от того, как автор(ы) библиотеки подошли к данному вопросу.
Никак он не реализован, это просто ООП-врайпер над сокетами libc. Упомянутый async_write-это обыкновенный write в неблокирующий дескриптор сокета, тот самый что выдаётся POSIX функцией socket (или что там в винде вместо этого), и последующий мониторинг событий на этом сокете в потоке io_service::run разными реакторами в зависимости от ОС. Это лиуксовый реактор, обратите внимание на метод start_op, через этот метод реализованы все функции работы с сокетами различных типов в asio. Все правила работы с POSIX сокетами и из свойства естественным образом переносятся на сокеты в boost::asio.
B>никак не говорит о том, как реализован конкретно boost::asio::ip::tcp::socket, и какие требования накладывает на своё использование в результате этого. Он может как требовать синхронизации, так и не требовать -- всё зависит от того, как автор(ы) библиотеки подошли к данному вопросу.
Никак он не реализован, это просто ООП-врайпер над сокетами libc. Упомянутый async_write-это обыкновенный write в неблокирующий дескриптор сокета, тот самый что выдаётся POSIX функцией socket (или что там в винде вместо этого), и последующий мониторинг событий на этом сокете в потоке io_service::run разными реакторами в зависимости от ОС. Это лиуксовый реактор, обратите внимание на метод start_op, через этот метод реализованы все функции работы с сокетами различных типов в asio. Все правила работы с POSIX сокетами и из свойства естественным образом переносятся на сокеты в boost::asio.