Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многократный вызов функции из DLL 
:(
    Опции темы
Bima
Дата 3.5.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Если 100 потоков вызывают одну и туже функцию из DLL, нужно ли вызов функции помещать в критическую секцию???

100 потоков написал просто так, реальное значение может варьироваться от 2-3 до 1000.


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
ama_kid
Дата 3.5.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 10
Всего: 95



Цитата(Bima @  3.5.2007,  13:18 Найти цитируемый пост)
 нужно ли вызов функции помещать в критическую секцию???
Критические секции, как и другие объекты синхронизации, применяются, соответственно, для синхронизации доступа к расшаренным ресурсам. Мне кажется, что функция - это уже есть расшаренный ресурс (объект со своим стеком, областью данных и т.д.), поэтому я, к примеру, обязательно бы поместил её вызов в критическую секцию. Другое дело, что потоки могут быть настолько медленными (Sleep(1000)) и функция может быть настолько маленькой (int Sum(int a,int b){return a+b;} ), что межпотоковая коллизия может случится только теоретически, но тем не менее...


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Bima
Дата 3.5.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 15.8.2006

Репутация: 2
Всего: 2



Цитата

Другое дело, что потоки могут быть настолько медленными (Sleep(1000)) и функция может быть настолько маленькой (int Sum(int a,int b){return a+b;} ), что межпотоковая коллизия может случится только теоретически, но тем не менее... 

Как раз потоки быстрые, а вот функци может выполняться некоторое время. На всякий случай я поместил в критическую секцию, хотя теперь думаю, что зря. В DLL через функцию передаются данные и она(функция) ничего не возвращает, следовательно управление следующему оператору передается сразу. Критическая секция по сути дела не дает доступа одновременно к запуску несколько экземпляров фукций одновременно, НО, пока работает один экземпляр функции, может запросто вызваться второй. Вот здесь меня смущает то, что может ли произойти прерывание первого экземпляра функции и начаться выполнятся второй???


--------------------
Чтобы дойти до цели, надо идти.

Клавиатура и мышь - это главные инструменты прогресса.
PM MAIL WWW   Вверх
Vyacheslav
Дата 3.5.2007, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Имеет  помещать в критическую секцию, если ею используются расшаренные данные  


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Damarus
Дата 3.5.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 1
Всего: 29



Цитата(ama_kid @  3.5.2007,  13:40 Найти цитируемый пост)
Мне кажется, что функция - это уже есть расшаренный ресурс (объект со своим стеком, областью данных и т.д.), поэтому я, к примеру, обязательно бы поместил её вызов в критическую секцию.

Стек кстати у каждого потока свой.
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.