Похоже, плохая идея. С общими библиотеками это больше невозможно, как со статическими.
Возможно, вы могли бы использовать dlopen () с флагом RTLD_LOCAL, чтобы последующие вызовы dlopen не видели, что он уже загружен, и заставляли его работать так, как вам хочется ... но это все равно выглядит как плохая идея дизайна. Если у вас есть проблемы с производительностью, лучше не загромождать память несколькими копиями одной и той же библиотеки.
Я бы предложил использовать несколько процессов или использовать мьютекс, возможно, это более эффективно.
Когда вы работаете в Linux, могут также существовать и другие подходы, если вы можете получить доступ к исходному коду библиотеки, например, переименование символов в столько экземпляров, сколько необходимо ... Ну, как только вы получите исходный код, возможно, другие способы, такие как обеспечение безопасности потока библиотеки.