Хотя вы можете использовать IP C между потоками, обычно это не очень хорошая идея. Потоки в любом случае совместно используют всю память, поскольку они являются частью одного и того же процесса, и существуют очень эффективные механизмы для обмена данными между потоками.
Может быть, проще, когда один и тот же поток обрабатывает запрос на протяжении всего процесса. Таким образом, вам не нужно передавать запрос от потока к потоку. Однако, если у вас есть пул запросов, над которыми ведется работа, часто имеет смысл иметь поток, который может «отбросить» запрос, а затем впоследствии сможет заставить этот поток или другой поток «подхватить» request.
Самый простой способ сделать это - поместить всю информацию, относящуюся к запросу, в единую структуру или объект. Используйте стандартные инструменты синхронизации потоков (например, мьютексы) для управления поиском объекта, владения им и т. Д.
Поэтому, когда поток ввода-вывода получает запрос, он создает новый объект запроса, получает mutex и добавляет его в глобальную коллекцию запросов, над которыми работает сервер. Рабочие потоки могут проверить эту глобальную коллекцию, чтобы увидеть, какие запросы должны работать, или они могут быть явно отправлены потоком, который создал запрос.