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

PD>Здравствуйте, Сергей Мухин, Вы писали:


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


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


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


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



PD>
PD>int sum(int x, int y)
PD>

PD>А мы делаем


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



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


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


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


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


PD>Я нигде не ошибся ?





Если в будет вызываться старая либа внутри, то от проблемы не ушли. Если будет полная копия библиотеки, то у нас только два thread! и как вызывать? Все время проверять н омер thread?
---
С уважением,
Сергей Мухин
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.