![]() |
|
![]() ![]() ![]() |
|
Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Если 100 потоков вызывают одну и туже функцию из DLL, нужно ли вызов функции помещать в критическую секцию???
100 потоков написал просто так, реальное значение может варьироваться от 2-3 до 1000. -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
Критические секции, как и другие объекты синхронизации, применяются, соответственно, для синхронизации доступа к расшаренным ресурсам. Мне кажется, что функция - это уже есть расшаренный ресурс (объект со своим стеком, областью данных и т.д.), поэтому я, к примеру, обязательно бы поместил её вызов в критическую секцию. Другое дело, что потоки могут быть настолько медленными (Sleep(1000)) и функция может быть настолько маленькой (int Sum(int a,int b){return a+b;} ), что межпотоковая коллизия может случится только теоретически, но тем не менее...
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Как раз потоки быстрые, а вот функци может выполняться некоторое время. На всякий случай я поместил в критическую секцию, хотя теперь думаю, что зря. В DLL через функцию передаются данные и она(функция) ничего не возвращает, следовательно управление следующему оператору передается сразу. Критическая секция по сути дела не дает доступа одновременно к запуску несколько экземпляров фукций одновременно, НО, пока работает один экземпляр функции, может запросто вызваться второй. Вот здесь меня смущает то, что может ли произойти прерывание первого экземпляра функции и начаться выполнятся второй??? -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Имеет помещать в критическую секцию, если ею используются расшаренные данные
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 1 Всего: 29 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |