| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Потоки и функция |
| Автор: XSInet 12.4.2006, 15:01 |
| Здравствуйте, не могли бы вы ответить на такой вопрос: Если 2 потока обратятся к одной функции одновременно (каждый поток со своими параметрами вызовет функцию), то к потокам вернуться нормальные результаты или неверные. Если с одной функцией будет работать много потоков одновременно, то все потоки получат верный результ ? |
| Автор: Alexeis 12.4.2006, 15:12 |
| Результат будет зависить от того будет ли использовать функция какую нибудь глобальную переменную не помещенную в защищеную секцию, если да, то результат будет непредсказуеммым, а в остальном каждый поток будет иметь свои локальные переменные, а значит данные не перемешаются. |
| Автор: Poseidon 12.4.2006, 16:59 |
| XSInet, что за функция-то? Код покажи, или хотя бы опиши что делает. |
| Автор: Snowy 12.4.2006, 19:43 |
| Функция нормально отработает без проблем. Исключение будет только в случае, если сами функции будут использовать данные чужих тредов. Локальные переменные функций к таковым не относятся. |
| Автор: zalex 13.4.2006, 00:38 |
| Да пожалуй всё сказано. Если функция обходится только -входными параметрами -своими локальными переменными -чтением глобальной переменной то можно смело юзать. Вопросы могут возникнуть, если -функция может изменять какую нить глобальную переменную или прочий глобальный ресурс. В таких случаях, если возможно, создай поле, соответствующее этой глобальной переменной внутри потока, и скопируй туда её значение - пусть изменяет на здоровье. |