Я работаю над детерминированным проектом в реальном времени, который имеет цикл исполнения на итерацию нескольких сотен микросекунд. Я сталкиваюсь с проблемой, где при операции толчка на std :: driapory_queue случайным образом занимает большое количество времени. Операция толчка обычно занимает около 5-25 микросекунд, но случайным образом требуется 300 микросекунд до 5 миллисекунд. Приоритет_QUEUE . Я имею в виду следующий ответ: https://stackoverflow.com/a/29236236/6319901 для этого обращения. /> My Target OS: vxworks 7
language: c ++ 17 < /p>
код: < /p>
#include
#include
#include
#include
#include
#include
struct ipc_receive_t
{
std::uint32_t priority;
int data1;
float data2;
bool operatorpriority < object.priority;
}
};
int main(int argc, char const *argv[])
{
std::cout
output: < /p>
g++ -std=c++17 main.cpp -o main
main.cpp: In function ‘int main(int, const char**)’:
main.cpp:27:9: error: no matching function for call to ‘std::priority_queue::priority_queue(std::greater, std::remove_reference::type)’
27 | );
| ^
In file included from /usr/include/c++/14/queue:66,
from main.cpp:1:
/usr/include/c++/14/bits/stl_queue.h:691:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&, _Sequence&&, const _Alloc&) [with _Alloc = _InputIterator; _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
691 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:691:9: note: candidate expects 5 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:679:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&, const _Sequence&, const _Alloc&) [with _Alloc = _InputIterator; = _Alloc; _Requires = ; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
679 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:679:9: note: candidate expects 5 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:671:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&, const _Alloc&) [with _Alloc = _InputIterator; = _Alloc; _Requires = ; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
671 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:671:9: note: candidate expects 4 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:663:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Alloc&) [with _Alloc = _InputIterator; = _Alloc; _Requires = ; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
663 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:663:9: note: candidate expects 3 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:649:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&, _Sequence&&) [with = _InputIterator; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
649 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:649:9: note: candidate expects 4 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:638:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&, const _Sequence&) [with = _InputIterator; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
638 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:638:9: note: candidate expects 4 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:629:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&) [with = _InputIterator; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
629 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:629:9: note: template argument deduction/substitution failed:
main.cpp:27:9: note: deduced conflicting types for parameter ‘_InputIterator’ (‘std::greater’ and ‘std::vector’)
27 | );
| ^
/usr/include/c++/14/bits/stl_queue.h:594:9: note: candidate: ‘template std::priority_queue::priority_queue(std::priority_queue&&, const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
594 | priority_queue(priority_queue&& __q, const _Alloc& __a)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:594:9: note: template argument deduction/substitution failed:
/usr/include/c++/14/bits/stl_queue.h: In substitution of ‘template template using std::priority_queue::_Uses = typename std::enable_if::type [with _Alloc = std::vector; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’:
/usr/include/c++/14/bits/stl_queue.h:593:33: required from here
593 | template
| ^~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:513:15: error: no type named ‘type’ in ‘struct std::enable_if’
513 | using _Uses = typename
| ^~~~~
/usr/include/c++/14/bits/stl_queue.h:590:9: note: candidate: ‘template std::priority_queue::priority_queue(const std::priority_queue&, const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
590 | priority_queue(const priority_queue& __q, const _Alloc& __a)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:590:9: note: template argument deduction/substitution failed:
/usr/include/c++/14/bits/stl_queue.h:585:9: note: candidate: ‘template std::priority_queue::priority_queue(const _Compare&, _Sequence&&, const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
585 | priority_queue(const _Compare& __x, _Sequence&& __c, const _Alloc& __a)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:585:9: note: candidate expects 3 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:579:9: note: candidate: ‘template std::priority_queue::priority_queue(const _Compare&, const _Sequence&, const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
579 | priority_queue(const _Compare& __x, const _Sequence& __c,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:579:9: note: candidate expects 3 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:573:9: note: candidate: ‘template std::priority_queue::priority_queue(const _Compare&, const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
573 | priority_queue(const _Compare& __x, const _Alloc& __a)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:573:9: note: template argument deduction/substitution failed:
/usr/include/c++/14/bits/stl_queue.h:569:9: note: candidate: ‘template std::priority_queue::priority_queue(const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
569 | priority_queue(const _Alloc& __a)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:569:9: note: candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_queue.h:554:9: note: candidate: ‘template std::priority_queue::priority_queue() [with _Requires = _Seq; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
554 | priority_queue()
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:554:9: note: candidate expects 0 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:563:7: note: candidate: ‘std::priority_queue::priority_queue(const _Compare&, _Sequence&&) [with _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
563 | priority_queue(const _Compare& __x, _Sequence&& __s = _Sequence())
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:563:38: note: no known conversion for argument 1 from ‘std::greater’ to ‘const std::less&’
563 | priority_queue(const _Compare& __x, _Sequence&& __s = _Sequence())
| ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/14/bits/stl_queue.h:558:7: note: candidate: ‘std::priority_queue::priority_queue(const _Compare&, const _Sequence&) [with _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
558 | priority_queue(const _Compare& __x, const _Sequence& __s)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:558:38: note: no known conversion for argument 1 from ‘std::greater’ to ‘const std::less&’
558 | priority_queue(const _Compare& __x, const _Sequence& __s)
| ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/14/bits/stl_queue.h:496:11: note: candidate: ‘std::priority_queue::priority_queue(const std::priority_queue&)’
496 | class priority_queue
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:496:11: note: candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_queue.h:496:11: note: candidate: ‘std::priority_queue::priority_queue(std::priority_queue&&)’
/usr/include/c++/14/bits/stl_queue.h:496:11: note: candidate expects 1 argument, 2 provided
Подробнее здесь: https://stackoverflow.com/questions/794 ... mory-error
Std :: priority_queue ⇐ C++
Программы на C++. Форум разработчиков
1739577553
Anonymous
Я работаю над детерминированным проектом в реальном времени, который имеет цикл исполнения на итерацию нескольких сотен микросекунд. Я сталкиваюсь с проблемой, где при операции толчка на std :: driapory_queue случайным образом занимает большое количество времени. Операция толчка обычно занимает около 5-25 микросекунд, но случайным образом требуется 300 микросекунд до 5 миллисекунд. Приоритет_QUEUE . Я имею в виду следующий ответ: https://stackoverflow.com/a/29236236/6319901 для этого обращения. /> My Target OS: vxworks 7
language: c ++ 17 < /p>
код: < /p>
#include
#include
#include
#include
#include
#include
struct ipc_receive_t
{
std::uint32_t priority;
int data1;
float data2;
bool operatorpriority < object.priority;
}
};
int main(int argc, char const *argv[])
{
std::cout
output: < /p>
g++ -std=c++17 main.cpp -o main
main.cpp: In function ‘int main(int, const char**)’:
main.cpp:27:9: error: no matching function for call to ‘std::priority_queue::priority_queue(std::greater, std::remove_reference::type)’
27 | );
| ^
In file included from /usr/include/c++/14/queue:66,
from main.cpp:1:
/usr/include/c++/14/bits/stl_queue.h:691:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&, _Sequence&&, const _Alloc&) [with _Alloc = _InputIterator; _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
691 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:691:9: note: candidate expects 5 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:679:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&, const _Sequence&, const _Alloc&) [with _Alloc = _InputIterator; = _Alloc; _Requires = ; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
679 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:679:9: note: candidate expects 5 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:671:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&, const _Alloc&) [with _Alloc = _InputIterator; = _Alloc; _Requires = ; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
671 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:671:9: note: candidate expects 4 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:663:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Alloc&) [with _Alloc = _InputIterator; = _Alloc; _Requires = ; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
663 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:663:9: note: candidate expects 3 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:649:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&, _Sequence&&) [with = _InputIterator; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
649 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:649:9: note: candidate expects 4 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:638:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&, const _Sequence&) [with = _InputIterator; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
638 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:638:9: note: candidate expects 4 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:629:9: note: candidate: ‘template std::priority_queue::priority_queue(_InputIterator, _InputIterator, const _Compare&) [with = _InputIterator; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
629 | priority_queue(_InputIterator __first, _InputIterator __last,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:629:9: note: template argument deduction/substitution failed:
main.cpp:27:9: note: deduced conflicting types for parameter ‘_InputIterator’ (‘std::greater’ and ‘std::vector’)
27 | );
| ^
/usr/include/c++/14/bits/stl_queue.h:594:9: note: candidate: ‘template std::priority_queue::priority_queue(std::priority_queue&&, const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
594 | priority_queue(priority_queue&& __q, const _Alloc& __a)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:594:9: note: template argument deduction/substitution failed:
/usr/include/c++/14/bits/stl_queue.h: In substitution of ‘template template using std::priority_queue::_Uses = typename std::enable_if::type [with _Alloc = std::vector; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’:
/usr/include/c++/14/bits/stl_queue.h:593:33: required from here
593 | template
| ^~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:513:15: error: no type named ‘type’ in ‘struct std::enable_if’
513 | using _Uses = typename
| ^~~~~
/usr/include/c++/14/bits/stl_queue.h:590:9: note: candidate: ‘template std::priority_queue::priority_queue(const std::priority_queue&, const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
590 | priority_queue(const priority_queue& __q, const _Alloc& __a)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:590:9: note: template argument deduction/substitution failed:
/usr/include/c++/14/bits/stl_queue.h:585:9: note: candidate: ‘template std::priority_queue::priority_queue(const _Compare&, _Sequence&&, const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
585 | priority_queue(const _Compare& __x, _Sequence&& __c, const _Alloc& __a)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:585:9: note: candidate expects 3 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:579:9: note: candidate: ‘template std::priority_queue::priority_queue(const _Compare&, const _Sequence&, const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
579 | priority_queue(const _Compare& __x, const _Sequence& __c,
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:579:9: note: candidate expects 3 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:573:9: note: candidate: ‘template std::priority_queue::priority_queue(const _Compare&, const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
573 | priority_queue(const _Compare& __x, const _Alloc& __a)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:573:9: note: template argument deduction/substitution failed:
/usr/include/c++/14/bits/stl_queue.h:569:9: note: candidate: ‘template std::priority_queue::priority_queue(const _Alloc&) [with _Requires = _Alloc; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
569 | priority_queue(const _Alloc& __a)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:569:9: note: candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_queue.h:554:9: note: candidate: ‘template std::priority_queue::priority_queue() [with _Requires = _Seq; _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
554 | priority_queue()
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:554:9: note: candidate expects 0 arguments, 2 provided
/usr/include/c++/14/bits/stl_queue.h:563:7: note: candidate: ‘std::priority_queue::priority_queue(const _Compare&, _Sequence&&) [with _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
563 | priority_queue(const _Compare& __x, _Sequence&& __s = _Sequence())
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:563:38: note: no known conversion for argument 1 from ‘std::greater’ to ‘const std::less&’
563 | priority_queue(const _Compare& __x, _Sequence&& __s = _Sequence())
| ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/14/bits/stl_queue.h:558:7: note: candidate: ‘std::priority_queue::priority_queue(const _Compare&, const _Sequence&) [with _Tp = ipc_receive_t; _Sequence = std::vector; _Compare = std::less]’
558 | priority_queue(const _Compare& __x, const _Sequence& __s)
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:558:38: note: no known conversion for argument 1 from ‘std::greater’ to ‘const std::less&’
558 | priority_queue(const _Compare& __x, const _Sequence& __s)
| ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/14/bits/stl_queue.h:496:11: note: candidate: ‘std::priority_queue::priority_queue(const std::priority_queue&)’
496 | class priority_queue
| ^~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_queue.h:496:11: note: candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_queue.h:496:11: note: candidate: ‘std::priority_queue::priority_queue(std::priority_queue&&)’
/usr/include/c++/14/bits/stl_queue.h:496:11: note: candidate expects 1 argument, 2 provided
Подробнее здесь: [url]https://stackoverflow.com/questions/79433944/stdpriority-queue-pre-allocate-memory-memory-error[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия