с использованием ускоренных сокетов, мне нужен только один io_service?

имея несколько соединений в нескольких разных потоках .. Я в основном делаю базовый класс, который использует boost / asio.hpp и там про tcp .. теперь я читал это: http://www.boost.org/doc/libs/1_44_0/doc/html/boost_asio/tutorial/tutdaytime1.html он говорит, что «Все программы, использующие asio, должны иметь хотя бы один объект io_service». поэтому, если мой базовый класс имеет статический io_service (что означает, что для всей программы будет только 1, а все разные потоки и соединения будут использовать один и тот же объект io_service) или сделать каждое соединение отдельным io_service?

заранее спасибо!

обновление: Итак, в основном я хочу создать класс для базового клиента, у которого будет сокет. Для каждого сокета у меня будет поток, который всегда принимает, и другой поток, который иногда отправляет пакеты. заглянув сюда: www.boost.org/doc/libs/1_44_0/doc/html/boost_asio/reference/ip__tcp/socket.html (не могу сделать гиперссылку, так как я здесь новенький .. так что только 1 гиперссылка на сообщение) Я вижу этот класс сокета не является полностью потокобезопасным ..

поэтому 2 вопроса: 1. Исходя из схемы, которую я только что написал, нужен ли мне 1 io_service для всех сокетов (то есть сделать его статическим членом класса) или я должен иметь по одному для каждого? 2. Как сделать это потокобезопасным? следует ли мне поместить его в «потокобезопасную среду», то есть создать новый класс сокета, который имеет мьютексы и прочее, что не позволяет отправлять и получать одновременно, или у вас есть другие предложения? 3. Может стоит перейти на асинхронный дизайн? (кстати, каждый сокет будет иметь свой поток, но отправка и получение будут в одном потоке?)

просто для пояснения: я делаю tcp-клиент, который подключается к множеству серверов.

9
задан grich 2 November 2010 в 15:51
поделиться