Я думаю, что этот вопрос немного парадоксален, потому что вы спрашиваете, каковы лучшие практики для того, чтобы делать что-то, что по своей сути не является лучшей практикой;)
Когда есть совершенно хороший метод для блокировки сетевого ввода-вывода, любой компромисс, который заставляет вас опрашивать, по определению не лучшая практика.
Тем не менее, если вы сделаете опрос, я думаю, что было бы более уместно «запустить цикл выполнения до даты» в вашем потоке, вместо того, чтобы использовать какой-либо метод posix sleep или yield, который вы себе представляете. Помните, что каждый поток получает свой собственный цикл запуска, поэтому, выполняя цикл запуска, вы позволяете Apple использовать свою концепцию лучших практик для блокировки до будущей даты.
Что касается задержки, я не знаю, получите ли вы точный ответ о том, что такое хорошее время. Это компромисс между перегрузкой ЦП циклами опроса и небольшим застреванием в цикле выполнения, когда ввод / вывод готов для чтения из сети.
В идеале, я думаю, что я бы переориентировал ваши усилия на выполнение этой работы с использованием вызовов блокировки ввода / вывода, но если вы придерживаетесь метода опроса и ожидания, не беспокойтесь о конкретном времени задержки. Просто выберите то, что работает и не оказывает негативного влияния на производительность в любом направлении.
(Кроме того, я хотел бы уточнить, что я не слишком религиозен в отношении опроса и блокировки, я только подчеркиваю его ценность, потому что вы, очевидно, ищете более подходящее решение).