Использование single-threaded dll в многопоточном приложении
От: Olga_MMF  
Дата: 30.04.03 04:45
Оценка:
Есть у меня dll собранная в single-threaded.
Она будет использоваться в многопоточной программе (функции из нее будут вызываться
в одном из потоков). Вопрос — чем это черевато? То есть из того что апликуха не
навернулась при 5 запусках можно ли утверждать что и при 6 тоже не навернется?
Re: Использование single-threaded dll в многопоточном прилож
От: jazzer Россия Skype: enerjazzer
Дата: 30.04.03 06:32
Оценка:
Здравствуйте, Olga_MMF, Вы писали:


O_M>Есть у меня dll собранная в single-threaded.

O_M>Она будет использоваться в многопоточной программе (функции из нее будут вызываться
O_M>в одном из потоков). Вопрос — чем это черевато? То есть из того что апликуха не
O_M>навернулась при 5 запусках можно ли утверждать что и при 6 тоже не навернется?

Если гарантируешь, что только в одном из потоков и что она сама не использует внешние функции по-разному в зависимости от многопоточности — все должно быть нормально
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Использование single-threaded dll в многопоточном прилож
От: Дмитро  
Дата: 30.04.03 12:01
Оценка:
Здравствуйте, 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 прекрасно работать равно как и изредка глючить. Все зависит от того, как и какие стандартные функции она использует.

--
Дмитрий
--
Дмитрий
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.