C # многопоточный сервер. передача объекта в основной поток

#c# #multithreading

#c# #многопоточность

Вопрос:

У меня очень мало опыта работы с потоками, и я часами гуглил это, не понимая этого.

Я следовал этому руководству: http://www.switchonthecode.com/tutorials/csharp-tutorial-simple-threaded-tcp-server

Каков наилучший способ передачи объекта из потоков, которые обрабатывают взаимодействие с клиентом, в основной поток. Я просто хочу передать простые данные, такие как, кто подключен и кто отправил какое сообщение.

Заранее спасибо

Комментарии:

1. Если вы идете по маршруту «поток на клиента» (который, несмотря на то, что говорится в руководстве, не очень хорошо масштабируется), зачем вам нужен «основной поток» и почему вы хотите, чтобы он взаимодействовал с чем-либо, относящимся к отдельным клиентам?

2. Я хочу графический интерфейс на стороне сервера, в котором перечислены подключенные клиенты и то, что они делают. Какой способ решения этой проблемы лучше, чем один поток на клиента?

3. Очередь рабочих элементов с общим пулом потоков, которые обрабатывают элементы из очереди.

Ответ №1:

Ну, вы можете использовать простую синхронизацию, но это вызовет конфликты в потоках подключения, поэтому вы можете использовать очередь или что-то подобное.

Например:http://en.wikipedia.org/wiki/Producer-consumer_problem

Здесь у вас есть пример на C # : http://www.yoda.arachsys.com/csharp/threads/deadlocks.shtml