Информация об изменениях

Сообщение Re: Что почитать про многопоточность? от 15.09.2019 12:58

Изменено 15.09.2019 13:37 kaa.python

Re: Что почитать про многопоточность?
Здравствуйте, Basil2, Вы писали:

B>Несмотря на большой опыт, довелось использовать только mutex и event; да еще разок скопипастил код с conditional variable. А хочется войти в тему поглубже — как в принципе грамотно организовать многопоточное приложение. Но если гуглить, везде в основном описывают разные примитивы синхронизации и что надо захватывать ресурсы в одном порядке, а это я и так знаю. Более интересны паттерны дизайна на эту тему, а также тонкие моменты.


Я бы сказал что паттерна, основных, на данный момент два три: CSP, акторы и прямой путь в ад — шареная память. Самопальная реализация скорее зло, на которое можно идти если ты очень хорошо понимаешь что делаешь, тут, судя по вопросу, не тот случай. Хорошей реализации CSP не знаю, а про акторов может so5team подсказать, они тут часто свой SObjectizer рекламируют
Автор: so5team
Дата: 24.05.19
.

B>Конкретно, стоит задача написать сервер для небольшой сессионной MMO-игры. Я интуитивно понимаю, что клиентов надо обрабатывать в разных потоках, чтобы использовать все ядра проца. И притом желательно через тред-пул, поскольку клиент=поток будет слишком накладно если много клиентов. Но выразить это в грамотную архитектуру не могу (могу наколбасить связку из мутексов и возможно будет работать), но хочется ясного понимания как это спроектировать.


Я правильно понимаю, что планируется писать на C++? Если да, то можно начать с азов, C++ Concurrency in Action
Автор: kaa.python
Дата: 05.01.19
, как раз недавно свежачок подвезли. Эту книгу стоит прочитать вне зависимости от того, будете пользоваться фрэймворком или будете велосипедить.

B>Что посоветуете прочитать?


Ну и вообще, я бы порекомендовал подумать про инструмент в первую очередь и, если здравый смысл возобладает, не брать C++ для этой задачи, он тут не нужен ну вот вообще совсем. Я, как обычно, советую Go — быстро и просто с приличной скоростью. Если здравый смысл не победит и вы будете писать на C++, то вот прям ну крайне важно начать с фреймфорка, который будет решать вам задачи связанные с многопоточтностью, велосипед будет дорогой и мучительный.
Re: Что почитать про многопоточность?
Здравствуйте, Basil2, Вы писали:

B>Несмотря на большой опыт, довелось использовать только mutex и event; да еще разок скопипастил код с conditional variable. А хочется войти в тему поглубже — как в принципе грамотно организовать многопоточное приложение. Но если гуглить, везде в основном описывают разные примитивы синхронизации и что надо захватывать ресурсы в одном порядке, а это я и так знаю. Более интересны паттерны дизайна на эту тему, а также тонкие моменты.


Я бы сказал что паттерна, основных, на данный момент два три: CSP, акторы и прямой путь в ад — шареная память. Самопальная реализация скорее зло, на которое можно идти если ты очень хорошо понимаешь что делаешь, тут, судя по вопросу, не тот случай. Хорошей реализации CSP для C++ не знаю, а про акторов может so5team подсказать, они тут часто свой SObjectizer рекламируют
Автор: so5team
Дата: 24.05.19
.

B>Конкретно, стоит задача написать сервер для небольшой сессионной MMO-игры. Я интуитивно понимаю, что клиентов надо обрабатывать в разных потоках, чтобы использовать все ядра проца. И притом желательно через тред-пул, поскольку клиент=поток будет слишком накладно если много клиентов. Но выразить это в грамотную архитектуру не могу (могу наколбасить связку из мутексов и возможно будет работать), но хочется ясного понимания как это спроектировать.


Я правильно понимаю, что планируется писать на C++? Если да, то можно начать с азов, C++ Concurrency in Action
Автор: kaa.python
Дата: 05.01.19
, как раз недавно свежачок подвезли. Эту книгу стоит прочитать вне зависимости от того, будете пользоваться фрэймворком или будете велосипедить.

B>Что посоветуете прочитать?


Ну и вообще, я бы порекомендовал подумать про инструмент в первую очередь и, если здравый смысл возобладает, не брать C++ для этой задачи, он тут не нужен ну вот вообще совсем. Я, как обычно, советую Go — быстро и просто с приличной скоростью. Если здравый смысл не победит и вы будете писать на C++, то вот прям ну крайне важно начать с фреймфорка, который будет решать вам задачи связанные с многопоточтностью, велосипед будет дорогой и мучительный.