Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2014, 17:43   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Обработка большого количество пользователей.

День добрый уважаемые программисты, самые умные и самые добрые люди на свете. Суть моего вопроса в заголовке моей темы, но попробую изложить более подробно.
Предположим, у меня есть некое приложение - "сервер", которое обрабатывает несколько сотен или даже тысяч запросов, сложных, ботано-математических, в несколько секунд.

# Код.1

Код:
private void OnReceive(int userId)
{
 var thread = new Thread(() => 
  {
   foreach (var data in VeryBigData)
   {
    //...
   }
  });

 thread.Start();
}
Как же быть в такой ситуации если в момент обработки приходит второй запрос? Я понимаю, что в таком случае lock потоков решает проблему синхронизации, но создает другую проблему как задержка ответа для клиента, в случае если одновременных запросов не 2 а 100 к примеру..
Как правильно проектировать такие моменты и как решить собственную данную проблему?

Огроменейшое спасибо за любые подсказки и помощь.
coNsept вне форума Ответить с цитированием
Старый 29.08.2014, 19:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не оч. пойму что это за код... Всмысле это твой сервер на шарпе, или ASP.NET под управлением IIS?
Если первое то зачем синхронизировать? Как вообще сам механизм ответа построен?
Если второе то по идее IIS должен сам этим заниматься.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.08.2014, 01:53   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Сервер на шарпе и общение между клиентом и сервером происходит средствами WCF, но проблема заключается в том что когда я на сервере получаю запрос от клиента, что-то вроде GetSomeFile, в методе происходит чтение большого файла, соответственно если второй человек запросит в это время данный файл, произойдет exception с сообщением что файл занят другим процессом так как с ним еще работает первый человек.
Я решил проблему синхронизацией потока с помощью lock, но пока у меня клиентов не много, около 20-30 и это не сильно чувствуется, но если это число вырастит до 200-300 тогда это достаточно сильно повлияет на время ответа.
coNsept вне форума Ответить с цитированием
Старый 30.08.2014, 09:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если второй человек запросит в это время данный файл, произойдет exception с сообщением что файл занят другим процессом так как с ним еще работает первый человек.
А-а-а понял. А ты видимо его открываешь в эксклюзивном режиме. Посмотри параметры открытия такого файла. Где-то должен задаваться метод открытия файла как доступного другим процессам.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать количество подключенных пользователей Aleksandr Работа с сетью в Delphi 2 05.04.2013 16:04
программу которая с большого списка людей посчитает количество рожденных людей для каждой области. Ivan{-} Паскаль, Turbo Pascal, PascalABC.NET 3 16.02.2013 20:20
Обработка большого массива данных Ceme4kin Microsoft Office Excel 3 25.11.2011 13:15
Обработка большого текстового файла и составление по нему отчета erosss Помощь студентам 6 05.05.2010 13:18
Обработка большого кол-ва текстовых данных (Excel 2010) motorway Microsoft Office Excel 9 27.03.2010 00:47