170 похожих чатов

Не совсем вопрос по с/с++, но общий вопрос по мультитредингу

и асинхронному сообщению.

Конкретно, я работаю с камерами интел рилсенс, когда работаю с одной, то за 10 секунд "сна" процесс собирает в буффер около 300 фреймов, как и обещано около 30 fps.

естественно создается некоторый pipe, делается pipe.start(callback), pipe.stop, и колбеки вызываются асинхронно.

теперь СДК позволяет запустить pipe2.start(callback2) и по такой же схеме стоп и тд, с колбеком в другой буффер (так я написла колбек).

При запуске двух одновременно я не получаю 30 fps на каждый, а иногда 30 на оба, то есть около 300 фреймов в сумме в обоих буферах, иногда там 200 и 250, 100 и 250, пару раз было что один 300, а другой 2 или 10 или 40.

Процессор Intel(R) Core(TM) i3-4000M CPU @ 2.40GHz 2.39 GHz.


коротко код (можно читать примерно словами, детали не суть важно, там все через api, никакого моего мультитрединга или ассинхрона):
rs2::context ctx;

std::vector<rs2::pipeline> pipelines;

std::vector<std::string> serials;

rs2::pipeline pipe;
rs2::config cfg;
cfg.enable_device(serials[0]);
rs2::pipeline_profile profiles = pipe.start(cfg, callback);
pipelines.emplace_back(pipe);

rs2::pipeline pipe2(ctx);
rs2::pipeline_profile profiles2;
if(serials.size() > 1) {
rs2::config cfg2;
cfg2.enable_device(serials[1]);
profiles2 = pipe2.start(cfg2, callback2);
pipelines.emplace_back(pipe2);
}

sleep_for(nanoseconds(10000000000));

pipe.stop();
if(serials.size() > 1)
pipe2.stop();

Ничего сверхъестественного, старты, слип, стопы. (рилсенс дает контекст который менеджит обеими пайпами которые запускают колбеки ассинхроно).


Из того, насколько я понимаю, следует что либо они криво имплементировали ассинк общение когда больше одного девайса (то есть их context так себе) либо мой комп не тянет реальную эффективность в 60 fps ?

ну либо я криво использую их api, но вроде и колбеки и мульти-камеры на их примерах буквально написаны.

1 ответов

5 просмотров

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

Похожие вопросы

Обсуждают сегодня

Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
было так ;void set_http_ver(RESPD* ptr, char* version, uint32_t length) // example: 'RTSP/1.1 ' set_http_ver: mov eax, [esp + 4] mov ecx, [esp + 8] ...
Mixail Frolov
5
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
2
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
Карта сайта