Russian Qt Forum
Ноябрь 22, 2024, 22:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Одна и таже библиотека в разных потоках  (Прочитано 4777 раз)
mega_m
Гость
« : Декабрь 22, 2006, 23:19 »

Можно делать так ?

thread 1:      loadLib(a.so)
и параллельно в другом потоке подгружать одну и туже либу
thread 2:      loadLib(a.so)

или использовать Mutex для этих дел и загружать её один раз.
Записан
Вячеслав
Гость
« Ответ #1 : Декабрь 22, 2006, 23:54 »

Насколько я помню, so грузиться только один раз на уровне системы ... Но пингвина под рукой нет - проверить не могу ... Но воспоминания отчетливые Подмигивающий
Записан
mega_m
Гость
« Ответ #2 : Декабрь 23, 2006, 00:07 »

собственно нужен не только линукс. в ассистенте вроде ничего нет по этому поводу

>Насколько я помню, so грузиться только один раз на уровне системы

Вот этот вопрос и волнует сама система будет разруливать мои обращения к библиотеке из
разных потоков?

по большому счету нужен только вызов функции

 typedef void (*MyPrototype)();
 MyPrototype myFunction =
         (MyPrototype) QLibrary::resolve("mylib", "mysymbol");
 if (myFunction)
     myFunction();
Записан
Dendy
Гость
« Ответ #3 : Декабрь 23, 2006, 01:12 »

Идём в документацию по QLibrary и видим:

Note: All the functions in this class are reentrant.

Другими словами: Да, можно создавать екземпляр QLibrary в другом потоке и резолвить из него функции. Если такая библиотека уже бьІла загружена, её ресурсьІ становятся разделяемьІми.
Записан
mega_m
Гость
« Ответ #4 : Декабрь 23, 2006, 15:39 »

Спасибо. Если бы все с такими золотыми подсказками было бы !
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 20.