Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Потоки и функция


Автор: XSInet 12.4.2006, 15:01
Здравствуйте, не могли бы вы ответить на такой вопрос:

Если 2 потока обратятся к одной функции одновременно (каждый поток со своими параметрами вызовет функцию), то к потокам вернуться нормальные результаты или неверные.
Если с одной функцией будет работать много потоков одновременно, то все потоки получат верный результ ?

Автор: Alexeis 12.4.2006, 15:12
Результат будет зависить от того будет ли использовать функция какую нибудь глобальную переменную не помещенную в защищеную секцию, если да, то результат будет непредсказуеммым, а в остальном каждый поток будет иметь свои локальные переменные, а значит данные не перемешаются. smile

Автор: Poseidon 12.4.2006, 16:59
XSInet, что за функция-то? Код покажи, или хотя бы опиши что делает.

Автор: Snowy 12.4.2006, 19:43
Функция нормально отработает без проблем.
Исключение будет только в случае, если сами функции будут использовать данные чужих тредов.
Локальные переменные функций к таковым не относятся.

Автор: zalex 13.4.2006, 00:38
Да пожалуй всё сказано.

Если функция обходится только
-входными параметрами
-своими локальными переменными
-чтением глобальной переменной
то можно смело юзать.

Вопросы могут возникнуть, если
-функция может изменять какую нить глобальную переменную или прочий глобальный ресурс. В таких случаях, если возможно, создай поле, соответствующее этой глобальной переменной внутри потока, и скопируй туда её значение - пусть изменяет на здоровье.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)