|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
Очередь на std::list09.04.2024, 17:07. Показов 3840. Ответов 56
Метки нет (Все метки)
Здравствуйте,
Подскажите, как вы думаете или использовали бы очеред задач на основе std::list ? В моем случае std::list нужен потому что: -Удаление самой задачи происходит из самой задачи. -Выполненная задача взятая из первого элемента помещается в конец списка, до тех пор пока опять не дойдет до начала, и опять не выполнется или пока не будет удалена из самой задачи. Поэтому при вставке и удалении мне нужна гарантия валидности итератора. Вроде бы все удобно, но тут вспомнил про фрагментацию. А так как задачи будут помещатся и удалятся в std::list непрерывно на протяжении всей работы приложения, то похоже в итоге теоретически это приведет к сущесвенному замедлению работы приложеня ?
0
|
|
| 09.04.2024, 17:07 | |
|
Ответы с готовыми решениями:
56
Потокобезопасность std::map::end, std::list::end |
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 10.04.2024, 12:43 | ||
|
А пойти самому изучить то что вам говорят, не судьба. Можно же просто поныть ))
0
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 10.04.2024, 12:47 | ||
|
1) вы меняете класс задачи, хотя сама задача не поменялась, к ней ничего не добавилось и ничего не убавилось от нее.. зачем вы меняете класс задачи? все что изменилось это то что появилась необходимость сделать какие-то действия после выполнения задачи, так почему менять саму задачу, если она никак на самом деле не поменялась? 2) предположим, что вашу обработку задач потребуется поместить в DLL, которую в будущем должны использовать еще и другие программы, но они должны будут сохранять свои логи не в БД, а один в файл, а третий вообще в удаленном (remote) диске. Ваши действия?
0
|
||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||
| 10.04.2024, 12:55 [ТС] | ||||
|
Добавлено через 2 минуты
0
|
||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 10.04.2024, 12:55 | |
|
0
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 10.04.2024, 13:02 [ТС] | ||
|
По второму пункту вопросов - тоже не очень понятно. Я использую свою очередь именно из DLL - и что мне требуется то она и выполняет. Если нужно что то изменить я измению. У вас поведенеи кода меняется без изменения кода ?
0
|
||
|
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
|
|||
| 10.04.2024, 13:08 | |||
|
0
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||
| 10.04.2024, 13:14 | |||
|
0
|
|||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
||
| 10.04.2024, 13:18 | ||
|
Принципиально невозможно зафиксировать время само-удаления. В момент X объект ещё не может указать время собственного удаления, потому что он ещё не удален.А в момент, Y, когда объект уже удален, он уже вообще ничего не сможет сделать, потому что его уже не существует.На практике объекты отчитываются в том, что они по факту уже выполнили какие то возложенные на них задачи. А не о собственном удалении.
0
|
||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||
| 10.04.2024, 13:22 [ТС] | ||||
|
Вообщем я сделаю в данном классе Task метод, которые примет на вход колбек или лямбду, которая будет вызыватся обьектом класса при каждом добавлении и удалении задачи, а Пользователь класса сам решит, что с этой информацией делать и куда заносить. Добавлено через 1 минуту Повторю: Метод который запускает процесс удаления вызывается из самой задачи, но физически элемент в котором находится задача удаляется после того, как задача выполнится из самого обьекта класса задачи.
0
|
||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 10.04.2024, 13:23 | ||
logger->log(...) после удаления объекта, странно что мне приходится разъяснять такие мелочи достаточно опытным программистам
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|||
| 10.04.2024, 13:27 | |||
|
Я писала о том, что объект сам не сможет выполнить:
0
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||||||
| 10.04.2024, 13:31 | ||||||||
Только менять нужно не сам Task, а некоторый менеджер задач (контейнер задач). Аналогия такая: есть например тип int, и есть контейнер этого типа который реализует работу по списком этого типа (как например тот же std::list<int>). Вы ведь не требуете, что бы внутри int была реализация удаления этого int из std::list. Все действия связанные с добавлением/удалением и т.д реализует сам контейнер и управляется вне типа который используется в качестве типа элемента контейнера. Такой подход например позволяет использовать тип с разными контейнерами, интерфейсы которых отличаются. Вопросы остались ? ![]() Добавлено через 2 минуты ![]()
) Но возможность такая есть
0
|
||||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 10.04.2024, 13:32 [ТС] | ||
|
А очередьь состоит из std::function<void()> - что позволяет поместить в нее задачу любого типа. Хоть на примем данных с сервера, хоть рендер кадра.
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|||||
| 10.04.2024, 13:35 | |||||
|
Вы зафиксировали время: Вот здесь вы фиксируете время завершения задачи, а не время когда задача была удалена:
0
|
|||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||
| 10.04.2024, 13:40 | ||||
|
Добавлено через 2 минуты
0
|
||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 10.04.2024, 13:40 [ТС] | ||
|
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|||
| 10.04.2024, 13:40 | |||
|
Я писала о том, что: Такое впечатление, что вы не различаете понятия: "объект удален" и "объект выполнил свою бизнес-логику"
0
|
|||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 10.04.2024, 13:42 [ТС] | ||
|
Меня std::list<std::function<void()>> или std::deque<std::function<void()>> как контенер для задачи вполне устраивает. ПО крайней мере на данный момент.
0
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 10.04.2024, 13:49 | ||
|
eva2326,
ну можно удалить объект а потом уже логировать, у меня в коде вообще нет удаления.. если надо можно добавить удаление и после него сразу логирование... не считаю эту деталь принципиальной.. не в этом была суть. ТС понял что я ему хотел сказать, а флудить по незначительным деталям в рамках которых есть место различной интерпретации у меня нет желания. Добавлено через 2 минуты
0
|
||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|||
| 10.04.2024, 13:58 | |||
|
Выше шла речь о том, что бы объект залоггировал время собственного удаления. А это принципиально невозможно. И не путать себя и других. Событие "завершение задачи" и событие "удаление объекта, связанного с задачей" - это принципиально разные события.
0
|
|||
| 10.04.2024, 13:58 | |
|
std::priority_queue - очередь с приоритетом
Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int') Сортировка std::list Static std::list Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|