Доброе утро. Давно мучаюсь с такой проблемой.
Есть класс - назовем его
Сервер, к которому обращаются из разных потоков
Клиенты.
Необходимо спроектировать общение
Клиента с
Сервером таким образом, чтобы
Сервер, получив запрос от одного
Клиента, обработал его (в это время остальные
Клиенты в своем потоке ждут очереди), и затем начал обрабатывать следуюшего
Клиента и т.д.
Пробовал в классе
Сервер обарачивать тело каждого паблик метода в lock(this) {}. Но происходила "самоблокировка"
Может потому, что эти методы вызывают друг друга?
Слаб в вопросе многопоточности, это мой первый опыт с ней. Собственно вопрос: какое существует архитектурное решение? Что почитать по этому поводу? Классы клиентов будут расти, и соответственно не хотелось бы блокировку возлагать на них.
Приаттачил схему, если это как-то поможет прояснить ситуацию.
ЗЫ: обращения к серверу должны проходить синхронно. Важно, чтобы обрабатывался лишь один запрос единовременно.