#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