Запустить N разных очередей по X каждой на Z потоков?
Здравствуйте. Есть нужда почти динамически создать с десяток очередей, на каждую из которых раз в секунду приходит таск на ~50мс работы. Конкретное применение - поочередно производить манипуляции с разными таблицами в mysql. Казалось бы, можно создать все очереди прямо в том же процессе - но тогда тупежка одной очереди приведет к проблемами с другой, а это не вариант, поэтому стоит задача все это расспаралелить на разные потоки, child_process'ом к примеру.
Вопрос: что произойдет если на 8 поточном CPU, запущу 20 очередей в 20 sub-процессах, задача каждой из которых - производить асинхронные операции (то есть не тратя процессорное время)? Как распределится нагрузка по ядрам? Насколько это хороший подход? Прийдется ли написать какую-то систему распределения по sub-процессах для процессинга нескольких очередей в одном процессе, дабы в общем кол-ве их было 8?
>>производить асинхронные операции (то есть не тратя процессорное время)
С чего это асинхронные операции перестали тратить процессоров время? Просто поток не будет блокироваться. В конечном итоге у тебя все равно все упрёться в планировщик MySQL - у него свое мнение, как потоки распределять.
Xilian, когда то в аналогичном проекте так и сделал, но это не помогло. Там был отдельный конекшен на каждый запрос, и две разные таблицы, тогда еще запрос по этому поводу задавал: Mysql заблокировать транзакцию по foreign key?
Внизу есть примерная схемка того, что нужно. Тогда я, наверное, чего то недочитал/где то затупил, но работало оно не так как нужно.
Ну обрабатываются процом, но в другом процессе/потоке.
Об остальном - это я уже не знаю. Обычно в языках есть какие то внутренние врапперы для работы с потоками, они там сами себе распределяются и над этим не задумываюсь даже. Сервер настраивать буду не я.