2017-02-12 10 views
3

Я использую grpc в iOS с двунаправленными потоками.grpc поток iOS, отправлять только при запуске GRXWriter.state?

Для потока, который я пишу, я подклассифицировал GRXWriter, и я пишу ему из фонового потока.

Я хочу быть как можно быстрее. Тем не менее, я вижу, что статус GRXWriter переключается между started и paused, и иногда я получаю исключение, когда я пишу ему во время состояния paused. Я обнаружил, что перед тем, как писать, мне нужно подождать GRXWriter.state, чтобы стать started. Это действительно требование? GRXWriter разрешено писать только в том случае, если его состояние started? Он очень часто переключается между started и paused, и это кажется, что это может замедлить меня.

Другая проблема с этой проверкой состояния заключается в том, что мой код выглядит уродливым. Есть ли другой способ, с помощью которого я могу использовать двунаправленные потоки лучше? В C# grpc я просто получаю поток, который я пишу свободно.

Edit: Я предполагаю, что причина, почему я спрашиваю это: в моем потоке, который пишет для GRXWriter, у меня есть while цикл, который продолжает проверку того state является started и не делает ничего, если это не так. Есть ли лучший способ сделать это, а не опросить state?

ответ

3

GRXWriter приостанавливается, поскольку ядро ​​gRPC принимает только одну операцию записи, ожидающую рассмотрения. Следующему нужно подождать, пока не завершится первый. Таким образом, экземпляр GRPCCall блокирует писателя до тех пор, пока предыдущая запись не будет завершена, изменив его состояние!

Что касается исключения, я не уверен, почему у вас возникла проблема. GRXWriter больше похож на абстрактный класс, и кажется, что вы выполнили свою собственную реализацию, наследуя его. Если вы действительно этого хотите, может быть полезно обратиться к GRXBufferedPipe, который является внутренней реализацией. В частности, если вы хотите избежать ожидания в цикле для записи, повторная запись в настройщике состояния GRXWriter должна быть хорошим вариантом.

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

  • Нет связанных вопросов^_^