Посл.ответ |
Сообщение |
 Ранг: 216.9 (наставник), 85thx Активность: 0.31↘0.15 Статус: Участник X-Literator
|
Создано: 18 марта 2016 23:49 · Личное сообщение · #1
Привет, ребята. Ситуация. Есть библиотека (статическая - lib), написанная на Си, которая потокоНЕбезопасна. Кроме того, есть приложение, которое должно в потоках вызывать один метод этого приложения. Код библиотеки есть, но библиотека коммерческая и достаточно обширная, поэтому править ее очень не хотелось бы - работы на месяцы. Как вы считаете, какие есть выходы, чтобы совершать потокобезопасные вызовы метода? - Можно сделать много процессов, но пострадает быстродействие Если все-таки вы порекомендуете превратить библиотеку в потокобезопасную, то хотелось бы узнать, какие, кроме статических переменных, глобальных переменных, указателей на захардкоженные адреса памяти, есть факторы, которые могут нарушить потокобезопасность? Спасибо заранее.
----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. | Сообщение посчитали полезным: |
|
 Ранг: 337.6 (мудрец), 224thx Активность: 0.21↘0.1 Статус: Участник born to be evil
|
Создано: 19 марта 2016 00:27 · Поправил: ajax · Личное сообщение · #2
"обертки" сделать вида
----- От многой мудрости много скорби, и умножающий знание умножает печаль | Сообщение посчитали полезным: |
 Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 19 марта 2016 00:27 · Поправил: Модератор · Личное сообщение · #3
Зачем процессов много? Воткнуть критическую секцию на вызов метода, не? З.Ы. Опередили.
| Сообщение посчитали полезным: |
 Ранг: 216.9 (наставник), 85thx Активность: 0.31↘0.15 Статус: Участник X-Literator
|
Создано: 19 марта 2016 01:04 · Личное сообщение · #4
ajax, Archer, метод довольно долго обрабатывает данные (порядка 10-15 секунд). Я это не упомянул, но это может стать препятствием (наверное?).
----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. | Сообщение посчитали полезным: |
 Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 19 марта 2016 01:21 · Личное сообщение · #5
Ну пока 1 поток считает, остальные будут ждать. В чём препятствие-то? Зато потокобезопасно. Либо разные процессы, будут потоки работать параллельно. Либо переписывать либу, чтоб потоки работали параллельно без проблем.
| Сообщение посчитали полезным: |
Ранг: 71.2 (постоянный), 33thx Активность: 0.05↗0.12 Статус: Участник
|
Создано: 19 марта 2016 01:44 · Личное сообщение · #6
Еще можно наделать несколько копий этой либы в виде DLL.
| Сообщение посчитали полезным: |
 Ранг: 324.3 (мудрец), 221thx Активность: 0.48↘0.37 Статус: Участник
|
Создано: 19 марта 2016 02:04 · Личное сообщение · #7
CrawlerА вызываются из методов какие-нибудь апи? Если много общих вызовов, то можно хукнуть функи и обернуть в крит.секции ) Добавлено спустя 1 минутуХотя не вариант, если используются глобальные переменные внутри
----- IZ.RU | Сообщение посчитали полезным: |
 Ранг: 216.9 (наставник), 85thx Активность: 0.31↘0.15 Статус: Участник X-Literator
|
Создано: 19 марта 2016 02:17 · Личное сообщение · #8
Archer, да, будет потокобезопасно. Жаль, пострадает производительность - смысл как раз был в том, чтобы использовать несколько потоков. Пока оставлю тему открытой, напишу, какое нашлось решение.
----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. | Сообщение посчитали полезным: |
 Ранг: 337.6 (мудрец), 224thx Активность: 0.21↘0.1 Статус: Участник born to be evil
|
Создано: 19 марта 2016 08:19 · Личное сообщение · #9
Crawlerнесколько мини-exe, с запуском на конкретное ядро. больше пока мыслей нет
----- От многой мудрости много скорби, и умножающий знание умножает печаль | Сообщение посчитали полезным: |
 Ранг: 990.2 (! ! !), 380thx Активность: 0.68↘0 Статус: Модератор Author of DiE
|
Создано: 19 марта 2016 11:42 · Личное сообщение · #10
а если вручную несколько раз загрузить либу в свое АП? по разной базе 1 либа = 1 поток. хотя смысл сомнителен, можно и мини-ехе запилить в нужном количестве.
----- [nice coder and reverser] | Сообщение посчитали полезным: |