ПОВЫСИТЬ обучающую программу на многопоточном клиенте?

Есть ли какие-либо хорошие обучающие программы о многопоточном клиенте кроме того на веб-сайте ПОВЫШЕНИЯ? Многопоточный клиент, который может обработать отправку данных к серверу whilist также печатающий, что сервер посылает ему в то же время. Например: нить для того, что пользователь вводит и посылает ему в сервер и нить, которая обращается с гнездом и получает информацию от сервера и печатает его на суде.

2
nl ja de
добавлено автор TheNotMe, источник
вы спрашиваете об использовании asio или чем-то еще? можете вы обеспечивать связь примера на веб-сайте Повышения, так, чтобы люди знали то, о чем вы говорите.
добавлено автор user1252446, источник

1 ответы

Ссылка, которую вы дали, является превосходным руководством о том, как использовать повышение:: библиотека asio. Вы будете в состоянии сделать то, что вы хотите без многократных нитей, как только вы понимаете, как это работает.

Идея asio (асинхронный IO) состоит в том, чтобы отозвать вас, как только операция закончена объектом io_service. Каждый раз, когда вы называете aync_xxx, вы передаете к нему указатель функции (или функтор), который назовут, как только операция сделана. Таким образом у вас не должно быть отдельного блокирования нити при опросе iOS.

for example, you want to read a message from the server, once it is done. call do_something(Message& msg). That exactly what example code did.

Поскольку TCP - находящийся на потоке протокол без естественной границы сообщения, необходимо определить собственный формат сообщения на нем. В примере это определяет chat_message класс с этой целью.

Чтобы прочитать сообщения, клиент выполняет эти шаги, каждый из которых вызывается в результате отзыва после того, как предыдущая async_xxx операция сделана. это также полагается на то, что async_read полон только, когда точное число определенных байтов прочитано, или когда ошибка происходит.

  1. требование async_connect, передайте handle_connect как его отзыв.
  2. handle_connect называет async_read, проход handle_read_header как его отзыв
  3. handle_read_header называет async_read, проход handle_read_body как его отзыв.
  4. handle_read_body в конечном счете назовет async_read, передаст handle_read_header как его отзыв, так, чтобы процедура повторилась для следующего сообщения.

notice that, In the sample, it did "cout.write..." in step 4, before it invoke async_read. all you need to do is to replace the "cout.wirte.." part with your do_something(msg).

часть письма следует за подобной цепью отзывов, единственная разница - то, что цепь ломается, когда больше сообщения, чтобы написать, следовательно мы должны проверить условие и перезапустить его.

1
добавлено
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest