Есть ли `std ::`, эквивалентный libdispatch `dispatch_data_t`?

я очень люблю dispatch_data_t, Он предоставляет полезную абстракцию поверх диапазона памяти: он обеспечивает подсчет ссылок, позволяет потребителям создавать произвольные поддиапазоны (которые участвуют в подсчете ссылок родительского диапазона), объединять поддиапазоны и т. Д. (Я выиграл ‘ не вдавайтесь в подробности — документы прямо здесь: Управление объектами данных отгрузки)

Я пытался выяснить, есть ли эквивалент в C ++ 11, но термины «диапазон», «память» и «подсчет ссылок» довольно общие, что делает поиск в этом вопросе немного сложным. Я подозреваю, что тот, кто проводит больше времени со стандартной библиотекой C ++, чем я, может знать об этом.

Да, я знаю, что могу использовать dispatch_data_t API из кода C ++, и да, я знаю, что было бы нетрудно получить наивную реализацию первого прохода такого рода вещи, но я специально ищу что-то идиоматическое для C ++ и с высокой степенью полировки / надежность. (Может быть, повысить?)

4

Решение

Нет.

Представления диапазона предлагаются для будущих пересмотров стандартов, но они не являются собственниками.

dispatch_data_t тесно связан с GCD, так как очистка происходит в указанной очереди, определенной при создании: для дублирования этого поведения нам потребуются пулы потоков и очереди в std, которого у нас нет.

Как вы заметили, владение перекрывающимся типом неизменяемого диапазона в разреженной или смежной памяти не составит труда записать. Полностью готовый, он должен будет поддерживать распределители, какую-то необработанную систему входных буферов (стирание типа в механизме владения / уничтожения?), Иметь возможности для асинхронной итерации по блокам (с настроенным размером блока), тщательно обрабатывать ошибки и исключения, и какой-то способ эффективно превратить представления rc 1 в изменяемые версии.

Что-то такое сложное сначала должно появиться в библиотеке, как boost и пройти итеративные улучшения. И поскольку он довольно многогранен, то, возможно, что-то с достаточным количеством его свойств для ваших целей уже может быть там.

Если вы катите свой собственный, я призываю вас представить его для boost рассмотрение.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]