Использование OpenSSL в многопоточном приложении

Я писал клиентское приложение SOAP на C ++ в Ubuntu, используя OpenSSL для моего транспорта HTTPS и pthreads для потоков. У меня есть несколько потоков - один центральный поток сбора данных, который периодически получает рабочие потоки для выполнения запросов SOAP через общие очереди, защищенные мьютексами.

Читая документацию по OpenSSL я нашелOpenSSL поточно-ориентирован? в FAQ по OpenSSL, в котором описаны механизмы, необходимые для обеспечения безопасности потоков при использовании OpenSSL. Я реализовал это, и все работает отлично.

Причиной моего вопроса на самом деле является концептуальная трудность. Я думал о реализации той же функциональности, что и мое приложение, но вместо использования потоков я бы создал 2 отдельныхapplications Один для рабочего потока (из которых будет запущено несколько копий), а другой для основного потока сбора данных. Затем я бы использовал TCP-сокеты для связи между двумя, а не мьютекс-защищенными очередями. Это может быть плохой идеей, но это не очень важно - меня смущает то, чтоwould I have to implement the same functions required to ensure OpenSSL thread safety in this second approach or not?

Я предполагаю, что мне это не нужно, и они могут рассматриваться как независимые (действительно, наверняка, так должно быть, так как многие приложения используют OpenSSL), но в чем причина этого?What is different between multiple applications using shared library code and multiple threads sharing the same code??  Уже несколько лет я успешно пишу многопоточные приложения, и меня беспокоит, что я не могу найти ответ на этот вопрос.

Ответы на вопрос(2)

Ваш ответ на вопрос