Я бы сконцентрировался на том, чтобы получить правильный рабочий процесс, а затем профилировать, чтобы увидеть узкие места, а затем попытаться выяснить, где параллелизм ( многопоточность! = Параллелизм или асинхронное выполнение ) может вам помочь.Насыщение вашего ЦП, сети или дискового ввода-вывода несколькими потоками выполнения не приведет к ускорению и обычно ухудшает производительность, особенно на многопоточных процессорах Intel.
Тогда я бы больше беспокоился о том, чтобы сделать его неблокирующими асинхронный, прежде чем сделать его многопоточным.Блокирующие задачи (сериализованные) полностью сводят на нет все преимущества попыток использовать потоки для обеспечения параллельности.
Многопоточность не означает, что она будет работать магически быстрее или эффективнее, если задачи все еще сериализуются в рабочем процессе.Наоборот, это может даже сделать вещи медленнее и менее эффективными, если у вас нет передачи сообщений и асинхронных операций прямо перед рукой.
Также, если вы используете это на линейке ноутбуков Core i7вы получите только 4 реальных потока (4 гиперпотока обычно ухудшают работу приложений с привязкой к процессору), а чрезмерная попытка заставить вещи происходить не по порядку, а затем их возврат обратно может не принести вам никакой реальной выгоды имного сложностей.На гораздо большем количестве основных серверов это может быть не так, а на ноутбуке многопоточность не принесет вам большой пользы.
"Выполнить параллелизм легко, правильно выполнить параллелизм это очень тяжело! " - перефразируя мой айкидо сэнсэй