Есть у меня dll собранная в single-threaded.
Она будет использоваться в многопоточной программе (функции из нее будут вызываться
в одном из потоков). Вопрос — чем это черевато? То есть из того что апликуха не
навернулась при 5 запусках можно ли утверждать что и при 6 тоже не навернется?
Re: Использование single-threaded dll в многопоточном прилож
O_M>Есть у меня dll собранная в single-threaded. O_M>Она будет использоваться в многопоточной программе (функции из нее будут вызываться O_M>в одном из потоков). Вопрос — чем это черевато? То есть из того что апликуха не O_M>навернулась при 5 запусках можно ли утверждать что и при 6 тоже не навернется?
Если гарантируешь, что только в одном из потоков и что она сама не использует внешние функции по-разному в зависимости от многопоточности — все должно быть нормально
Здравствуйте, Olga_MMF, Вы писали:
O_M>Есть у меня dll собранная в single-threaded. O_M>Она будет использоваться в многопоточной программе (функции из нее будут вызываться O_M>в одном из потоков). Вопрос — чем это черевато? То есть из того что апликуха не O_M>навернулась при 5 запусках можно ли утверждать что и при 6 тоже не навернется?
То, что dll собрана как single-threaded, говорит лишь о том, что она использует single-threaded стандартные библиотеки. А само разделение библиотек на single-threaded и multiple-threaded связано с тем, что есть такие функции, которые могут использовать статические (глобальные) переменные и в multiple-threaded среде необходимы особые меры по обеспечению их безопасности. Примером может быть функция strtok, которая имеет внутреннее состояние. single-threaded реализация хранит это состояние в глобальной (статической) переменной, тогда как multiple-threaded реализация хранит в thread specific storage.
В общем, может твоя dll прекрасно работать равно как и изредка глючить. Все зависит от того, как и какие стандартные функции она использует.