2013-03-15 2 views
1

Я создал широковещательный сервер, который должен иметь 10 клиентов за раз. Он должен иметь возможность считывать данные от 10 клиентов за раз и отвечать через Broadcast Message to all the Clients. Чтобы быстро сделать это сообщение, я решил сделатьСовместное использование очереди между двумя отдельными потоками для получения и обработки данных в широковещательном сервере UDP

One Thread1 будет предназначен для непрерывного получения данных и размещения данных в очереди. Затем эти данные считываются из очереди другим Thread2, и обработка выполняется.

т. Е. Очередь должна быть разделена между Thread1 и Thread2.

Как я могу сделать это эффективно? Как распределяется очередь между этими двумя потоками?

А что, если Thread1 пишет в той же очереди и Thread2 читает?

Любая помощь будет оценена по достоинству.

+0

@Karim ElDeeb :( – Ayse

+1

Чтобы поделиться данными между потоками, ознакомьтесь с этим [вопросом] (http://stackoverflow.com/questions/118199/c-thread-shared-data). чтения и записи на одни и те же общие данные, вам необходимо [синхронизировать] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms686689%28v=vs.85%29.aspx) доступ к данные о доле. –

+0

Я дам вам знать, как это работает, как только я попробую, но выглядит полезно :) Спасибо :) – Ayse

ответ

0

Основная идея заключается в том, что «потребитель» ждет, пока некоторые данные будут доступны, а «производитель» уведомляет о доступности данных. Это можно сделать просто и эффективно, используя переменные условия. Взгляните на this article - автор реализует такую ​​очередь, сопровождающую каждый шаг подробным объяснением.

Смежные вопросы