Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
Dima TAlekseySQLесть в языке какие- то объекты гарантирующие свою уникальность в работающей программе (реализация ключей)? Код: plaintext 1. 2. 3. Пасибки, создал класс- синглтон с атомарной переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 11:05 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLДругими словами, QThreadPool написан так, что ему нельзя скормить умный указатель, а только саму задачу. Походу и с другими обертками он поступит также. Значит остается только посылать сигналы из деструктора задачи (что мне не нравится, потому что превращает мою гениальную программу в код- лапшу). Сделайте обертку реализующую QRunnable внутри которой shared_ptr на ваш Task_ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 11:36 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLЯ хочу это использовать в собственном барьере синхронизации: с помощью этого механизма я пойму, что задача, унаследованная от QRunnable, выполнена и удалена. В Qt есть такое неудобство: QThreadPool позволяет дождаться заврешения всех задач, не разделяя их по подсистемам (поскольку работа идет через статический объект QGlobalInstance). А я хочу создать возможность для каждой подсистемы анализировать выполненность только своих задач.Так не используйте globalInstance(), создайте свой пул для каждой подсистемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 12:12 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLЯ хочу избежать кода в задачах, чтобы весь код распался на независимые подсистемы. Задачи должны не знать, что за ними следят :) Так за ними и не надо следить. Но даже независимые подсистемы как-то должны общаться между собой. Планировщик задач не должен за ними следить, его работа сформировать задачу и отдать её на выполнение. Задаче при выполнении достаточно закинуть свой результат в известную ей очередь "выполненных заданий". Кто эту очередь будет вычитывать - не её дело. Диспетчер результатов не должен следить за задачами, его дело тупо сидеть сидеть и ждать сообщений из очереди выполненных задач. Именно так я понимаю "независимые подсистемы". У тебя же они как-то слишком запутываются в тугой узел "слежения". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 12:18 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyСделайте обертку реализующую QRunnable внутри которой shared_ptr на ваш Task_ Спасибо! Что- то я про такое решение и не подумал! Думаю это лучший вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 12:36 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLСпасибо! Что- то я про такое решение и не подумал! Думаю это лучший вариант. А есть последствия, что я при определении полей объекта создаю shared_ptr по this, хотя объект недосконструирован? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 13:16 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLА есть последствия, что я при определении полей объекта создаю shared_ptr по this, хотя объект недосконструирован? Так делать нельзя. Да и я вообще не это имел в виду. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 13:33 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
Ну и естественно добавить в TaskWrapper методы которые QRunnable долже реализовывать и в них вызывать те же методы у m_task_ptr ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 13:37 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНу и естественно добавить в TaskWrapper методы которые QRunnable долже реализовывать и в них вызывать те же методы у m_task_ptr Не понял зачем это надо: ведь наследование у нас публичное и все методы QRunnable и так доступны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 14:01 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
QThreadPool ничего не знает про shared_ptr, и единственный способ это обойти - передать ему указатель не на вашу задачу, а на другой вспомогательный объект, в котором уже лежит shared_ptr на вашу задачу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 14:08 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLНе понял зачем это надо: ведь наследование у нас публичное и все методы QRunnable и так доступны... ЧТобы как минимум вызвать метод который совственно стартует поток. В обертке кода потока нет. Она должна перенаправить его на вложенный объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 14:13 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
BTW, в QRunnable есть пара методов: bool autoDelete() const void setAutoDelete(bool autoDelete) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 14:15 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЧТобы как минимум вызвать метод который совственно стартует поток. В обертке кода потока нет. Она должна перенаправить его на вложенный объект. Надо метод run() реализовать и все: наследование от QRunnable уже делает этот поток задачей. В методе run() как раз и описывается что должна делать задача, а библиотечный объект QRunnable не позволяет у себя создать метод run(). Так что думаю никаких методов никуда перенаправлять не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 14:21 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
BarloneBTW, в QRunnable есть пара методов: bool autoDelete() const void setAutoDelete(bool autoDelete) Спасибо, не замечал этой возможности! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 14:23 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 14:25 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLЕсть умные указатели, которые при выходе из области видимости удаляют объект. Но мне не надо удалять объект, а всего- навсего передать объект в другую подсистему и периодически анализировать удалили там его или пока нет. Другими словами, нужна обертка, у которой перегружены все операторы указателя + метод empty(), чтобы проверить валидность объекта. Можно обойтись без велосипедостроения? weak_ptr ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 14:39 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL Тут МастерЗив отжег по теме :) Думаю после этого тема исчерпана.А зачем вам shared_ptr на this? Если вы передадите этот объект в QThreadPool::start, при завершении задачи объект будет удален, и вы останетесь со сломанным shared_ptr с ненулевым счетчиком и невалидным указателем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 15:10 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLBarloneBTW, в QRunnable есть пара методов: bool autoDelete() const void setAutoDelete(bool autoDelete) Спасибо, не замечал этой возможности!Но есть один нюанс: если сделаете setAutoDelete(false), получите другой квест - как узнать, что задача уже завершилась и ее можно удалять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 15:35 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
BarloneНо есть один нюанс: если сделаете setAutoDelete(false), получите другой квест - как узнать, что задача уже завершилась и ее можно удалять. Это сложно. Вставить "delete this" в правильное место способен не каждый, тут программист нужен. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 15:52 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovBarloneНо есть один нюанс: если сделаете setAutoDelete(false), получите другой квест - как узнать, что задача уже завершилась и ее можно удалять. Это сложно. Вставить "delete this" в правильное место способен не каждый, тут программист нужен. Так если по мнению автора, из деструктора сигналы посылать некошерно, хотя это можно сделать в одном месте и отнаследоваться, то что уж говорить про вставку какого-то дополнительного кода в каждый метод run каждого наследника (а я подозреваю, что их больше одного, что - то там про подсистемы было...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 16:04 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
Barloneчто - то там про подсистемы было... Аффтар просто переусложняет задачу. Насколько я помню, у него просто есть большой массив данных, которые он хочет параллельно обсчитать. Но вместо обычного пути использования start-join стандартных потоков он выбрал путь самурая, ведущий к смерти. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 16:09 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLЕсть умные указатели, которые при выходе из области видимости удаляют объект. Но мне не надо удалять объект, а всего- навсего передать объект в другую подсистему и периодически анализировать удалили там его или пока нет. Чем не подходит сохранить у себя еще один shared_ptr и смотреть его счетчик использования? Здесь еще, возможно, надо смотреть на то, чтобы объект удалялся в том же exe/dll модуле, где был создан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 17:10 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
Еще через сто сообщений мы плавно подойдем к GC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 19:57 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
maytonЕще через сто сообщений мы плавно подойдем к GC. Garbage Collector & C++ Вообще- то вопрос возник не из- за памяти, а из- за желания разделить программу на независимые подсистемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 08:02 |
|
||
|
Есть готовые обертки для указателей с проверкой на существование объекта?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLиз- за желания разделить программу на независимые подсистемы. Желание разделить программу на подсистемы - правильное. Делать спагетти из перекрёстных ссылок - неправильный способ его достижения. При разделении на подсистемы, их следует максимально инкапсулировать, оставляя торчать наружу только определённый интерфейс. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 12:16 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39634712&tid=2017876]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
149ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 270ms |

| 0 / 0 |
