Остановка одновременной очереди отправки GCD с «Достигнут мягкий предел потока рассылки: 64» в журнале аварий

Моя программа - это сервер, который обрабатывает входящие запросы. Каждый действительный запрос упакован вNSOperation и перешел в нормальное русло.NSOperationQueue

каждыйNSOpearation обрабатывает свой запрос. В некоторых случаях наNSDictionary который я используюdispatch_queue (параллельная очередь),dispatch_barrier_async(когда установлено значение) иdispatch_sync(когда получить значение), чтобы сделать этоNSDictionary потокобезопасный.

Я тестирую свою программу с 100 запросами одновременно, тогда процесс иногда останавливается. Я убиваю процесс сSIGSEGV чтобы увидеть журнал сбоев.

Большинство тем застряло вdispatch_sync этой очереди. И есть примечание ниже

Достигнуто мягкое ограничение потока отправки: 64 (слишком много потоков отправки заблокировано в синхронных операциях)

Что на самом деле означает эта заметка? Каково его поведение? Я не могу найти информацию об этом пределе. Как я могу исправить эту проблему?

Я могу придумать 2 возможных способа избежать этой проблемы. (который ясобираюсь их протестировать и позже обновлю)

использованиеdispatch_semaphore ограничить отправку блока в эту параллельную очередь.пределmaxConcurrentOperationCount изNSOperationQueue

У вас есть лучшее решение?

Ответы на вопрос(1)

Ваш ответ на вопрос