Если требуется выполнить слишком много операций и недостаточно ресурсов (потоков) для выполнения этих операций, что происходит тогда, когда вы вызываете .post?
Есть ли способ отказаться от всех будущих операций на основе текущего размера очереди?
@ ÖöTiib просветите меня, как вы проверяете "глубину" (размер) очереди ввода-вывода в Asio? Кстати, это стоило бы ответа
@ ÖöTiib Как бы вы проверили размер? Я полагаю, у меня может быть собственная общая очередь, когда я публикую, я увеличиваю, а когда бегу, я уменьшаю. но, тем не менее, у меня нет возможности узнать, что такое ограничение на системном уровне.
@sehe, насколько мне известно, таких функций нет. Я увеличиваю свой счет при публикации и уменьшаю его, когда задача завершена, чтобы отслеживать нагрузку.





И да и нет.
Нет: очередь будет расти бесконечно. Это как std::vector и ко бесконечная очередь. Нет ни возвращаемого значения, говорящего о том, что очередь заполнена, ни поведения блокировки.
Да: очередь теоретически неограничена, в какой-то момент вашей машине не хватает памяти. В этот момент программа может аварийно завершить работу из-за неправильного выделения памяти, или ваша ОС убьет ее из-за чрезмерного использования памяти.
Да. Лучшие места для таких проверок функции или лямбды, которые вы передаете для публикации. Как справиться со слишком большой нагрузкой, зависит от вас и от характера вашего программного обеспечения, нет решений серебряной пули.