Я создаю общую библиотеку с классом, который создает поток в своем конструкторе, который запускает его до вызова деструктора. Все методы этого класса являются потокобезопасными. Что-то вроде этого:Неправильная практика создания потока в общей библиотеке?
class NetworkRPCConnection {
std::thread t;
public:
NetworkRPCConnection() : t([](){maintain_connection();}) {}
~NetworkRPCConnection(){close_connection(); t.join();}
}
Это прекрасно работает, но неудобно ли создавать поток в общей библиотеке? Стоит ли упоминать в документации API, или лучше скрыть эту деталь реализации?
Определенно документируйте его в API. – randomusername
Ну, все прочитанные мной книги говорят, что детали реализации должны быть скрыты из документации. Почему разработчик хотел бы знать, если библиотека использует потоки? –
Разработчик должен знать, потому что они могут использовать потоки, и если что-то еще использует их, это больше напрягает этот ресурс. Кроме того, потоки часто требуют специальных конфигураций сборки и параметров, которые должны быть встроены в систему сборки. – randomusername