Я бы хотел разобраться в том, каким образом названные функции реализуют сохранение информации о последней возникшей ошибке в текущем вызывающем потоке
Как это реализуется?
И каким способом можно реализовать аналогичный функционал? Ну, например, предоставить для своей библиотеки аналог GetLastError()/errno()
Ответ
Начиная с 11 стандарта (обоих языков) можно использовать спецификатор хранения thread_local. При использовании компиляторов, которые его не поддерживают - аналогичные функции ОС, например Thread Local Storage в WinAPI. Пример использования TLS в библиотеке можно посмотреть здесь: Using Thread Local Storage in a Dynamic-Link Library
Комментариев нет:
Отправить комментарий