Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Многопоточный вызов функций / 23 сообщений из 23, страница 1 из 1
28.11.2019, 14:09
    #39895621
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
Добры день всем, обрисую ситуацию:
Есть страница, она условно разделена на 3 части
Каждая из частей страницы заполняется отдельной функцией, которая вызывается
по событию $(document).ready
в теле функции прописано 3 вызова каждый из которых заполняет свою часть страницы
section1.load("/Init/getSection1")
section2.load("/Init/getSection2")
section3.load("/Init/getSection3")

На стороне сервера прописаны соотв. методы которые возвращают PartialView
НО, получается следующая картина, все 3 функции становятся в статус Pending и по факту выполняются по очереди а
не одновременно
Я ожидаю что время работы всех трех функций будет не больше чем время выполнения самой длинной
Но по факту получаем время равное сумме времени выполнения каждой функции

Подскажите, в какую сторону смотреть
AsynController, await и т.п. ни к чему не приводят - все равно все выполняется по порядку
...
Рейтинг: 0 / 0
28.11.2019, 14:17
    #39895625
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
Они где в очередь встают, на клиенте или на сервере?
...
Рейтинг: 0 / 0
28.11.2019, 14:25
    #39895634
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
Где именно они встают в очередь не понятно, видимо на IIS
В отладчике Chrome видно статус Pending и выполняются они поочереди, а я ожидаю одновременно
...
Рейтинг: 0 / 0
28.11.2019, 14:35
    #39895640
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
izoldov-roskini
Где именно они встают в очередь не понятно, видимо на IIS
В отладчике Chrome видно статус Pending и выполняются они поочереди, а я ожидаю одновременно

Почему ты из-за статуса пендинг на клиенте сразу решил, что они на сервере по очереди выполняются?
...
Рейтинг: 0 / 0
28.11.2019, 14:35
    #39895641
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
izoldov-roskini
отладчике Chrome видно статус Pending
Они там одновременно появляются или последовательно?

Смотри логи сервера - как они приходят.
И вообще - информации мало, может быть всё - от настройки максимального количества коннекшенов до блокировок на уровне БД

Сделай просто три пустых метода с Task.Delay() и вызови их одновременно
...
Рейтинг: 0 / 0
28.11.2019, 14:43
    #39895660
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
fkthat,

Потому что после того как например первый стал в статус 200, потом второй становится в 200, потом третий
Отсюда видно, что выполнение идет по очереди
...
Рейтинг: 0 / 0
28.11.2019, 15:07
    #39895692
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
izoldov-roskini
Потому что после того как например первый стал в статус 200, потом второй становится в 200, потом третий
Отсюда видно, что выполнение идет по очереди
это всего лишь означает, что первый выполняется быстрее, а третий медленнее и ничего не говорит о параллельности или последовательности выполнения на сервере.

Проверь через Task.Delay
...
Рейтинг: 0 / 0
28.11.2019, 15:09
    #39895695
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
Shocker.Pro,

Я поставил точки остановка в каждом из методов
Они срабатывают последовательно
...
Рейтинг: 0 / 0
28.11.2019, 15:27
    #39895713
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
izoldov-roskini
Они срабатывают последовательно
а как они должны срабатывать? одновременно в трёх местах отладчик должен остановиться? Хотя бы в аутпут запиши начало и конец вызова

Shocker.Pro
Сделай просто три пустых метода с Task.Delay() и вызови их одновременно
...
Рейтинг: 0 / 0
28.11.2019, 15:31
    #39895721
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
Shocker.Pro,
при многопоточном вызове точки останова срабатывают в момент вызова, чего не происходит
точки останова ровно как и отпут срабатывают последовательно
все методы возвращают Task<ActionResult>
на лицо то, что поток пока не завершит обработку одного запроса, не обрабатывает следующий

может есть какие то настройки сервера или самой страницы?
...
Рейтинг: 0 / 0
28.11.2019, 15:45
    #39895739
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
izoldov-roskini
может есть какие то настройки сервера или самой страницы?

Вот упорно не могу понять таких людей - ну зачем спрашивать совета, если ты никого слушать не хочешь. Ты выясни сначала, что проблема действительно есть, а потом ищи "какие то настройки сервера или самой страницы", если она есть.
...
Рейтинг: 0 / 0
28.11.2019, 15:46
    #39895740
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
fkthat,

если бы проблемы небыло, я бы сюда не писал
всем спасибо, разберусь самостоятельно
...
Рейтинг: 0 / 0
28.11.2019, 16:02
    #39895760
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
izoldov-roskini
fkthat,

если бы проблемы небыло, я бы сюда не писал
всем спасибо, разберусь самостоятельно


непонятно при чём тут asp.net
последовательно вызовы идут с клиента
а вы пытаетесь найти проблему на серваке
...
Рейтинг: 0 / 0
28.11.2019, 17:59
    #39895847
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
Вот код на странице:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<script>
    $(document).ready(function () {
        $("#section1").load("/Test/Section1");
        $("#section2").load("/Test/Section2");
        $("#section3").load("/Test/Section3");
    });
</script>

<div id="section1" style="width:100px; height:100px; background-color: red;">

</div>

<div id="section2" style="width:100px; height:100px; background-color: green;">

</div>

<div id="section3" style="width:100px; height:100px; background-color: yellow;">

</div>



вот код контроллера
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
public class TestController : Controller
    {
        // GET: Test
        public ActionResult Index()
        {
            return View();
        }

        public async Task<ActionResult> Section1()
        {
            await Task.Factory.StartNew(()=> {
                Thread.Sleep(3000);
            });
          
            return new ContentResult() { Content = "Section1" };
        }

        public async Task<ActionResult> Section2()
        {
            await Task.Factory.StartNew(() => {
                Thread.Sleep(3000);
            });
            return new ContentResult() { Content = "Section2" };
        }

        public async Task<ActionResult> Section3()
        {
            await Task.Factory.StartNew(() => {
                Thread.Sleep(3000);
            });
            return new ContentResult() { Content = "Section3" };
        }
    }



Ожидаю что надписи в соотв. блоках появятся +/- одновременно
НО, в итоге последняя надпись появляется через 9 секунд

Отсюда вывод, методы вызываются последовательно а не одновременно, как еще пояснить?
...
Рейтинг: 0 / 0
28.11.2019, 18:06
    #39895851
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
izoldov-roskini
Код: html
1.
2.
3.
        $("#section1").load("/Test/Section1");
        $("#section2").load("/Test/Section2");
        $("#section3").load("/Test/Section3");

это асинхронный вызов?
...
Рейтинг: 0 / 0
28.11.2019, 18:14
    #39895857
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
Shocker.Pro,

это Ajax, по умолчанию асинхронный
...
Рейтинг: 0 / 0
28.11.2019, 18:56
    #39895880
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
Суть задачи сделать так, чтобы все 3 функции отработали одновременно
и надписи в элементах появились +/- одновременно
...
Рейтинг: 0 / 0
28.11.2019, 19:22
    #39895899
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
izoldov-roskini
Shocker.Pro,

это Ajax, по умолчанию асинхронный


Асинхронный и параллельный -- разные вещи.
Вы похоже не понимаете разницы.
...
Рейтинг: 0 / 0
28.11.2019, 19:25
    #39895901
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
...
Рейтинг: 0 / 0
28.11.2019, 21:01
    #39895942
izoldov-roskini
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
hVostt,

Согласен, параллельно
Исходя из написанного в посте решения я не вижу, в любом случае все выполняется по порядку
...
Рейтинг: 0 / 0
28.11.2019, 23:14
    #39895988
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
izoldov-roskini,

сессии используете?
может вы какой-то базовый пример сделаете и сюда выложите?
...
Рейтинг: 0 / 0
29.11.2019, 08:27
    #39896059
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
Shocker.Pro
izoldov-roskini
Они срабатывают последовательно
а как они должны срабатывать?
При пошаговой отладке должна быть такая картина: срабатывает брейкпоинт, делаем шаг. В этот момент снова должен сработать тот же брейкпоинт. Делаем еще шаг - снова он. Делаем четвертый шаг - первый поток переместился на следующую строку. Еще - второй, еще - третий. Если параллельности нет, то сначала первый вызов пройдет весь цикл обработки, потом второй, потом третий. Если есть какие-нибудь лаги, то брейкпоинт для следующего потока может сработать через 2-3 шага после предыдущего.
...
Рейтинг: 0 / 0
29.11.2019, 08:42
    #39896068
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточный вызов функций
hVostt
izoldov-roskini
Shocker.Pro,

это Ajax, по умолчанию асинхронный


Асинхронный и параллельный -- разные вещи.
Вы похоже не понимаете разницы.
Разные, но связанные. Асинхронность на клиенте позволяет использовать многопоточность сервера. Клиент может отправить одновременно несколько запросов на сервер, который будет обрабатывать их параллельно, но это, само собой, не значит, что и клиент отправляет и обрабатывает ответы параллельно. Отправит он их в порядке, определенном разработчиком, а примет в порядке, определенном сервером - какой быстрее им обработается, тот и раньше вернется.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Многопоточный вызов функций / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]