Я пишу общую библиотеку на C. Я знаю, что функции C не являются потокобезопасными.
Подпрограммы моей библиотеки выглядят так:
struct lib_handle {
....
};
int lib_init(lib_handle **handle);
int lib_process(lib_handle *handle);
....
....
Каждый метод принимает указатель на объект lib_handle
. Все состояние хранится внутри этой структуры. Глобальные переменные не используются.
Я предполагаю, что если каждый поток создает свои собственные lib_handle
экземпляры, несколько потоков могут использовать библиотечные функции. Поскольку у каждого потока есть собственный дескриптор, все должно работать.
Я еще не подтвердил это предположение. Мне интересно, что вы, ребята, думаете об этом дизайне, и как вы думаете, могу ли я назвать свою библиотеку потокобезопасной, учитывая, что у каждого потока есть свои собственные дескрипторы?
Любая помощь будет здорово!