0xd34df00d 12.04.2012 22:45 Azoth

SCGI неплох, парсер пишется в 5 строк и ваще одно удовольствие, Boost.Asio тоже одно удовольствие поебывать, все так мило, мимимишно и разумно, что ваще. Даже получше, чем QTcpSocket, лол, да и можно обмазываться хардкорными темплейтами.
В общем, за сегодня набросал сервер, все даже завелось и работает как надо с полпинка. Попытался потестить производительность — хуй там, оно в dmesg срет, что задетектило SYN flood. На локалхосте, ага. Ну и ладно. Сегодня наметил, а завтра доделаю всю бизнес-логику, и там уже можно будет смотреть.
Правда, что-то у меня чувство, что вся эта хуйня в одном потоке идет, ну и ладно пока что.

Блядь, чуваки, интересные проекты делают меня счастливым.

Recommended by:

@dorfe: Тупикал питонокодер только прочитавший Александреску

@pooq: моча съела говно

1. DZhon 13.04.2012 04:21

Чтобы было в разных потоках, нужно io_service::run дергать из нескольких, но тогда стоит синхронизацию через io_service::strand сделать.

2. Cthulhu 13.04.2012 04:47 Miranda

> Блядь, чуваки, интересные проекты делают меня счастливым.
А ты думаешь я зря тебя пинал на тему личкрафтов уже много-много раз? )

> Правда, что-то у меня чувство, что вся эта хуйня в одном потоке идет
Wait, ты написал сервер и не знаешь, как он работает?

3. 0xd34df00dDZhon /1 13.04.2012 08:09 Azoth

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

4. 0xd34df00dCthulhu /2 13.04.2012 08:10 Azoth

> А ты думаешь я зря тебя пинал на тему личкрафтов уже много-много раз? )
А личкрафты тоже котик :3

> Wait, ты написал сервер и не знаешь, как он работает?
Знаю, но эксперимент расходится с теорией, см. предыдущий коммент.

5. DZhon0xd34df00d /3 13.04.2012 08:53

Я подозреваю, что лоад весь в странде, а сама многопоточность нужна для мультиплексирования соединений, разве нет ?

6. 0xd34df00dDZhon /5 13.04.2012 09:03 Azoth

Э, не понял. У меня есть соединение, мне нужно проверить, корректное ли оно, и если все ок, перенаправить на бекенд. Бекенд подумает и вернет результат. Бекенд можно дергать в несколько соединений сразу. Разве тут няшная многопоточность не вылезет?

7. DZhon0xd34df00d /6 13.04.2012 09:36

Вылезет, у тебя на read из сокета хэндлеры в странде ?)

8. 0xd34df00dDZhon /7 13.04.2012 09:42 Azoth_primary

Да.

9. DZhon0xd34df00d /8 13.04.2012 13:26

Значе делай без странда, чтобы бэкенд мог работать с несколькими. На стороне бэкенда уже всякие синхронизации делать %)

10. 0xd34df00dDZhon /9 13.04.2012 13:28 Azoth_primary

У бекенда и так уже синхронизации.
А если я буду несколько сразу обработок запускать, у меня по пизде все не пойдет, без странда-то?

11. DZhon0xd34df00d /10 13.04.2012 13:30

Нет, race-condition будет только если внутри самих хэнделов есть разделяемые данные. странд — это сериализатор вызовов. А т.к. у тебя бэкенд сам является монитором, то все должно быть четко и без него.

12. 0xd34df00dDZhon /11 13.04.2012 13:33 Azoth_primary

Разделяемые данные внутри хендлеров — только права пользователей, и я подумываю навесить на них отдельные мутексы.
Спасибо за хинты, я если чо тебя еще попинаю :3

13. DZhon0xd34df00d /12 13.04.2012 13:46

Да, если shared_ptr-based design, то std::make_shared и std::move(ptr) сделают твой код счастливей в шиндовс. Я было хотел буферы передавать, как unique_ptr, но азио хоть и энфорсит мувы, где можно, но copy requirement все еще справедливо :(

Do you really want to delete ?