Я работаю над игровым сервером, написанным на C++, и я пытаюсь решить, сколько потоков использовать и какие задачи для потоковой передачи. Основной скелет сервера состоит из ввода/вывода клавиатуры и вывода на консоль, приема входящих подключений, отправки исходящих подключений и выполнения «мелочей» игры.Сервер C++ - в тему или не в тему?
То, что я хотел бы знать, - это то, что нужно дать отдельной теме. Должны ли каждый соединитель иметь свою собственную нить? Я знаю, что это переменная, это зависит от проекта или около того, но я бы хотел, чтобы он поддерживал довольно приличное количество игроков (где-то в сотнях, если это возможно).
Я думаю, что исходный движок полностью монотонный. –
Реализация Threading параллелизма «трудно». Если это не требуется * для проблемы, я бы настоятельно рекомендовал простые «ориентированные на события» подходы ... еще лучше использовать чужую проверенную библиотеку для инфраструктуры водопровода, если это возможно :) –
Мультиплексирование с однопоточным вводом-выводом (как и с epoll или kqueue) могут быть очень эффективными, когда они сделаны правильно, и могут быть концептуально намного проще, чем многопоточное решение. В то же время он предлагает естественную отправную точку для многопоточности, так как основной цикл ожидания мультиплексирования может выполняться несколько раз одновременно. –