![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: 3 Всего: 6 |
При создании нескольких потоков, которые должны читать из консоли и писать туда, чтение раздаётся этим потокам по очереди. Т. е. сначала читает один поток, следующая введённая строка уходит второму и так по кольцу. Есть ли возможность сделать так, чтобы введённая строка попадала сразу всем потокам?
|
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: 3 Всего: 6 |
В голову пришло такое:
Потоки ожидают возникновения события, основная программа читает stdin, после прочтения строки в буфер "дёргает" событие, потоки вычитывают буфер. Для каждого потока создаётся по событию, которым они сигнализируют об окончании чтения буфера. Основной поток с помошью WaitForMultipleObject ждёт, пока все потоки не прочитают буфер (чтобы не затереть его новыми данными). У кого ещё есть идеи по поводу? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Нормальная идея, только вместо кучи событий "прочитал" лучше использовать семафор (т.е каждый поток сначала захватывает его, потом отпускает, а основной поток ждет, когда от семафора все отцепятся. Возможно, основной поток тоже должен предварительно увеличить счетчик семафора (чтобы не сработало отпускание, пока еще не все потоки его подхватят).
-------------------- ... |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: 3 Всего: 6 |
А семафор будет сильно "легче" в плане использования ресурсов, чем *дцать событий?
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |