кроме как ждать и сигнал - PullRequest
1 голос
/ 29 марта 2012

Я разрабатываю приложение для обмена мгновенными сообщениями.

Это ситуация, в которой мне нужна помощь: Процедура в моем коде fgets () - сообщение, введенное пользователем. Теперь мне нужно разбудить поток с подпрограммой для отправки сообщения в сокет и т. Д. Я не совсем уверен, как это сделать.

Если я использую мьютекс: я не хочу, чтобы мой первый поток ожидал. Следовательно, я не хочу использовать это. Точно так же я не могу использовать cond_variable.

Скажите, пожалуйста, как это получить.

1 Ответ

0 голосов
/ 29 марта 2012

Дак говорит о том, что не стоит слишком много думать.

Другой способ, которым вы могли бы пойти, - это использовать трубу. Ваш поток обработки консоли записывает сообщение в канал, а сетевой поток выполняет блокировку чтения из канала.

В результате вы можете получить сетевой поток, выполняющий select () как для канала консоли, так и для сетевого сокета. Затем он просыпался и делал что-то, когда ему нужно было что-то отправить или что-то получить из сети. Эффектно!

...