Re[2]: а если так ?
От: Pavel Dvorkin Россия  
Дата: 10.12.13 16:14
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>либа (как Вы это называете) лежит в памяти и принадлежит процессу, а не потоку. Поэтому, если нигде в ее описании не объявлено, что она thread-safe, то использовать ее в разных thread нельзя.


Интересно, а если так ?

Делаем свою static library, экспонирующую те же функции, что и исходная, только с неким префиксом в имени. Функции просто вызывают соответствующие функции исходной library

Например, в исходной library


int sum(int x, int y)

А мы делаем


int my1sum(int z, int y)
{
  return sum(x,y);
}



Делаем еще одну свою static library, экспонирующую те же функции, что и исходная, только с неким другим префиксом в имени. (в ней будет my2sum)

Итого имеем две статические library, а к ним статически прилинкованы 2 копии исходной library.

Теперь делаем EXE, к нему линкуем наши обе библиотеки. В своей программе вызываем в одном потоке my1sum, а в другом my2sum.

По идее вызов mysum1 пойдет в первую копию, а mysum2 — во вторую. А мешать они друг другу не должны, так как можно считать, что это две разные библиотеки. И thread-safe не должно быть существенным, так как это разные библиотеки.

Я нигде не ошибся ?
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.