Страницы

Поиск по вопросам

среда, 15 мая 2019 г.

C/C++, GetLastError() и errno()

Я бы хотел разобраться в том, каким образом названные функции реализуют сохранение информации о последней возникшей ошибке в текущем вызывающем потоке
Как это реализуется?
И каким способом можно реализовать аналогичный функционал? Ну, например, предоставить для своей библиотеки аналог GetLastError()/errno()


Ответ

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

Комментариев нет:

Отправить комментарий