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