Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> одновременное выполнение callback функций, `одновременно` или `по очереди` 
V
    Опции темы
UhaMurad
  Дата 13.11.2007, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 22.9.2004
Где: Махачкала

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



Здравствуйте!

Меня интересует один вопрос... начну с примера: допустим в скрипте вызывается один за другим метод send объекта XMLHTTP... допустим ответ от сервера приходит почти одновременно... вопрос: может ли функции, передаваемые в методе open объекта XMLHTTP выполнятся одновременно (т. е. может ли одна функция начаться пока не завершилась первая)... как реализуется этакая многозадачность и зависит ли это от браузера?

Я почему спрашиваю: ведь код в этих функциях может манипулировать общими глобальными объектами и тогда встает вопрос наподобие "разделения ресурсов"...

Спасибо!
PM MAIL WWW   Вверх
cruelangel
Дата 13.11.2007, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



javascript - однопоточный язык

Добавлено через 1 минуту и 37 секунд
поэтому выполнение функции в нём - атомарно.
PM MAIL   Вверх
Astraller
Дата 13.11.2007, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 1.8.2007
Где: $Украина[Кры м]->Феодосия

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



UhaMurad, при обращении двумя функциями одновременно к одному обьекту xmlhttp произойдёт ошибка. Создавай новые обьекты xmlhttp и используй каждый экземпляр со своей функцией.

На правах ИМХО. smile

Добавлено через 1 минуту и 12 секунд
cruelangel, под обращением "одновременно" я понял - обращение одной функции и пока не вернулся ответ от сервера обращение второй.
Это вызовет ошибку.


--------------------
A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair
PM MAIL WWW ICQ   Вверх
UhaMurad
Дата 13.11.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 22.9.2004
Где: Махачкала

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



Astraller, извиняюсь, в принципе я так и делал (на каждый вызов новый XMLHTTP), просто неправильно описал  smile  


cruelangel, благодарю, это я и хотел услышать  smile 
PM MAIL WWW   Вверх
vasac
Дата 13.11.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

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



javascript — однопоточный. Но именно с XMLHttpRequest в IE могут происходить различные веселые глюки, по крайней мере, если в обработчике будет alert().
PM WWW   Вверх
szz
Дата 14.11.2007, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

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



Все не так.
Однопоточный - это да, но при ajax ситуация меняется. Если используется АСИНХРОННЫЙ аякс (а вы именно его использует, не так ли?)
При асинхронном запросе запускаются потоки, прям как в мультитредовой программе. и функции могут выполняться dполне одновременно. Например, если это две ф-и, которые пищут буковки в одну глобальную переменную, то в итоге может получиться замеса.
Например, одна callback пытается записать в переменную hello
а вторая - world.
Если они совсем уж одновременно запустятся - то строка может вдруг содержать hweolrllod
Не верите? Проверьте.
cruelangel, ты не прав. Атомарно - это пооператорно. Т.е. оператор из одной функции, потом из другой, потом следующий - снова из первой и т.д.
Опять же - это при асинхронных запросах. Синхронные идут в одном потоке конечно.


--------------------
PM   Вверх
vasac
Дата 15.11.2007, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

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



szz, пример кода можно?
Потоки, в которых грузятся данные и потоки выполняемого кода, это не одно и тоже.
PM WWW   Вверх
UhaMurad
Дата 16.11.2007, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 22.9.2004
Где: Махачкала

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



У ты.... как все сложно... значит беспокоится есть о чем  smile 

Это что же, придется писать систему управления разделяемыми ресурсами (глобальными объектами) самому  smile.  Я то не прочь, а может уже есть готовое отлаженное решение этой проблемы?
PM MAIL WWW   Вверх
Foror
Дата 23.4.2008, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(szz @ 14.11.2007,  22:45)
Если они совсем уж одновременно запустятся - то строка может вдруг содержать hweolrllod
Не верите? Проверьте.

Верю. Можно в JavaScript контролировать потоки? Ставить блокировки на глобальные переменные?
--------------------
Разработка веб-сайтов и создание интернет магазина
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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