Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

DNK
I. DNK
Баллы: 5

Подробнее »



Вопрос # 1 098

Раздел: Delphi » Прочее
/ вопрос открыт /

Приветствую, уважаемые эксперты!
Можно ли вызывать одну и ту же функцию из разных потоков? (в функции нет вывода на дисплей).

ymb62 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: ymb62 (статус: Посетитель)
Вопрос отправлен: 6 ноября 2007, 15:27
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, ymb62!
Можно, если:
- нет обращения к общим ресурсам без синхронизации (вывод на дисплей к ним относиться): файлы, сетевые подключения
- не используются глобальные переменные на запись. Хотя лучше вообще без глобальных переменных

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 6 ноября 2007, 15:42
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 6 ноября 2007, 20:56; участников в обсуждении: 4.
jackal

jackal (статус: Посетитель), 6 ноября 2007, 15:39 [#1]:

Почему бы и нет, могут присутствовать конфликты, к примеру если функция подключает файл, в зависимости от того как организованны потоки, такие ситуации можно избежать при включении условия
jackal

jackal (статус: Посетитель), 6 ноября 2007, 15:58 [#2]:

условия включают использования флагов булевые перем-е можно сделать исключение и сделать их глобальными, бул перем не требовательны и память не кушают, но не беспределить. Сделать их условием если в одном потоке выполняется подключение к файлу(пример) то поставить InPuthReadOk:=true; if InPuthReadok:=false then >>> ну вообщем мутить так
Вадим К

Вадим К (статус: Академик), 6 ноября 2007, 16:13 [#3]:

для того, что бы розрулить несколько потоков if и буленовских переменных недостаточно. Оператор if не атомарный.
Галочка "подтверждения прочтения" - вселенское зло.
ymb62

ymb62 (статус: Посетитель), 6 ноября 2007, 16:22 [#4]:

Спасибо.
jackal

jackal (статус: Посетитель), 6 ноября 2007, 16:26 [#5]:

да, но его нужно установить в функцию которую мы вызовим
jackal

jackal (статус: Посетитель), 6 ноября 2007, 16:28 [#6]:

здесь можно намутить просто четко продумать я представляю как, приду дома попробую... если не усну но через два дня закончу смену и неделю гуляю, вот тода замучу
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 6 ноября 2007, 20:56 [#7]:

чтобы гарантированно избежать конфликтов между потоками можно использовать критические секции, а не накручивать переменные и исключительные ситуации

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 18 августа 2017, 02:33
Выполнено за 0.03 сек.
Рейтинг@Mail.ru