Форум вопросов и ответов

Форум вопросов и ответов (https://www.otvetnemail.ru/)
-   Продолжение старого архива (https://www.otvetnemail.ru/prodolzhenie-starogo-arhiva-804/)
-   -   Thread local storage без __thread (https://www.otvetnemail.ru/prodolzhenie-starogo-arhiva-804/thread-local-storage-bez-__thread-350439/)

Guest 30.09.2011 16:31

Thread local storage без __thread
 
Код на чистом C, компилирующийся на Windows, SunOS и AIX. Задача: с минимальным количеством изменений сделать код thread safe чтобы он компилировался на трёх платформах. Контроля над запуском тредов у меня нет. Моя входная функция вызывается извне. Первый вызов к ней одиночный, т.е. пока он не закончится, вызовы к другим тредам поступать не могут. Существует ситуация, при которой два вызова к входной функции связаны друг с другом и происходят в пределах одного треда. Мне нужно сохранять информацию между двумя этими вызовами.На виндах я использовал виндовские треды. Для Юниксов - pthread. В первом одиночном вызове я инициализирую мютексы. Для передачи информации в пределах треда в Юниксах использую глобальную переменную, объявленную с директивой __thread. На Сане всё работает чудесно, а AIX, зараза, ругается, говоря, что __thread не поддерживается платформой - мы используем древнего монстра для совместимости с максимальным количеством платформ. Накидайте мне плиз идей как наиболее элегантно обойти эту проблему.


Часовой пояс GMT, время: 07:40.


© www.otvetnemail.ru - Форум вопросов и ответов.