powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Потокобезопасный set_last_error()
5 сообщений из 5, страница 1 из 1
Потокобезопасный set_last_error()
    #38613395
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для сохранения ошибки сделал my_error.h
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
int my_last_error = 0;

void set_last_error(int err)
{
  my_last_error = err;
}

int get_last_error()
{
  return my_last_error;
}



дальше в коде если происходит какая-то ошибка
Код: plaintext
1.
2.
set_last_error(MY_ERROR_NUMBER);
return false;


вызывающий код если надо получает через get_last_error() и анализирует.

Все просто и красиво пока не потребовалось вызывать из двух потоков. Например оба одновременно вызвали set_last_error() и первый анализирует ошибку второго.

Есть какие-то стандартные способы решения этой проблемы?

Пока придумал такой вариант: сделать <map> и в нем по GetCurrentThreadId() (в качестве индекса массива) хранить в разных элементах, может проще варианты есть?
...
Рейтинг: 0 / 0
Потокобезопасный set_last_error()
    #38613397
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартная многопоточная библиотека Си как-то решает эту проблему, создает отдельный блок памяти для отдельного хранения своих глобальных переменных в каждом потоке, только не понимаю как именно это прописывается.
...
Рейтинг: 0 / 0
Потокобезопасный set_last_error()
    #38613450
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитай о Thread Local Storage. В большинстве компиляторов для этого есть директива
__thread или __declspec(thread).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Потокобезопасный set_last_error()
    #38613470
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Помогло.
...
Рейтинг: 0 / 0
Потокобезопасный set_last_error()
    #38613607
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПрочитай о Thread Local Storage. В большинстве компиляторов для этого есть директива
__thread или __declspec(thread).


+1
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Потокобезопасный set_last_error()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]