|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 32450. Ответов 421
Метки вопросы наследования (Все метки)
начало было положено в ветке - Считать текстовые файлы из папки - там и возник вопрос об Архитектуре...
собрала... осталось отображение создать (типа I_tbl_Show) и пронаследовать ? в разные классы пункта назначения (или на консоль, или в файл, или в БД, или допустим ещё в форму)... N.B. классы (пункты-назначения) делать не надо - эти View уже реализованы разработчиками того ПО, на котором сейчас идёт работа... а) пока что можно просто прописать функции-члены класса; и по месту использовать, что надо при разработке - в файл или на консоль; б) в перспективе для Release - реализовать и откомпилировать и выгрузку и в файл, и выгрузку в БД, и отражение в DataGrid... === !! Т.Е. если в Release захочется и выгрузку в текст, и в БД, и допустим ещё в форму (например с разных кнопок сделать) - тут уж лучше и писать, как положено, наследование??... -- к слову из прошлой ветки о: === Обоснование выбора уровня Абстракции (I_tbl_Show со всеми виртуальными функциями): чтобы не дублировать код-сбора-для-выгрузки -- сделать class Table - и класс-интерфейс I_tbl_Show, в котором обозначить virtual-функции выгрузки... эти функции определить в др. классах - типа Interface (IwriteCSV, IwriteDB, IwriteDataGrid)... p.s. классы консоль, файл, бд, DataGrid - не создаём, т.к. эти пункты назначения уже присутствуют... p.p.s. вывести конечные интерфейсы с определёнными методами записи на кнопки... === ИЛИ то, что подчёркнуто чуть выше, стоит реализовать в одном классе Table, и здесь же задать все virtual функции ?? === на скрине: синие - классы, зелёные - интерфейсы (в с++ по сути тоже классы) птицами отмечены уже кое-как реализованные классы (2 птицы) курсивные стрелки - отсутствие наследования ![]() Добавлено через 7 минут вобщем вопрос: class Table и класс I_Tbl_Show - объединить или нет? Добавлено через 10 минут p.p.s. чтобы избежать проблем Ромба и такого: Неоднозначность при множественном наследовании
0
|
||||
| 11.03.2020, 10:51 | |
|
Ответы с готовыми решениями:
421
Проверка двух текстовиков
Сделать скрипт для вывода текстов из текстовиков |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 03.06.2020, 10:41 | ||
|
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 03.06.2020, 18:28 [ТС] | |||
а задачи (очередь задач)? работающие асинхронно ? - в многопоточном приложении ? на компе с одним ядром...- это ведь и есть конкурентность... vs. параллелизм - на несколько ядер... хотя если породить потоков больше, чем ядер(-1, т.к. 1 для главного потока) - то и потоки встанут в очередь... p.s. хотя если бывают такие процессы, которые параллелятся не через ядра (мало ли какой сигнал с какого датчика на какой дивайс?)... то и в очередь становИться некуда будет... но семафором (как счётчиком ресурсов) - контролировать можно будет... пока так понимаю... Добавлено через 5 минут
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 03.06.2020, 18:37 | |
|
JeyCi, смотрите на уровень абстракции.
Для компьютера с одним ядром истинного параллелизма нет. Но он (параллелизм) есть для прикладной программы, которая сделала себе, например, два потока. На ее уровне у нее есть параллелизм этих потоков, если они (в абстракциях этой программы) не конкурируют за ресурсы.
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 03.06.2020, 19:32 [ТС] | |||
вот теперь поняла, что в c++ значит потоки: когда висит GUI, работает main, на стороне какое выбрасывание в log идёт... или парсинг текстовиков, пока GUI музыку проигрывает... ![]() Добавлено через 13 минут значит так и параллелить... чтобы сильно часто синхронизировать (блокировать) не приходилось... а если нет общих ресурсов - то и блокировать нечего... фантастика: всё гениальное - просто... IO - это когда процесс/поток сначала consume data, потом produce result... а когда он потом consume то, что он дал result'ом - это уже deadlock...
0
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||||
| 04.06.2020, 11:33 [ТС] | |||||||||
![]() что такое неделимая операция семафора
на ru_stackoverflow_com /questions/511595/%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%D0%BD%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D0% BC%D0%B0%D1%8F-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0% B8%D1%8F-%D1%81%D0%B5%D0%BC%D0%B0%D1%84%D0%BE%D1% 80%D0%B0"
=== вот пример работающего семафора с riptutorial... Кликните здесь для просмотра всего текста
- и что интересно - работают и работают... и работают... без цикла в коде, и main() исполняется постоянно - мы join'им потоки к главному потоку (чтобы пропечатать в консоль)... и они продолжают работать? (без цикла)... наверно, пока процесс (т.е. само приложение от main'a) не остановим (закроем/выйдем) ?.. деструктора в классе под спойлером нет... - а как сделать здесь непонятно... хотя в std есть sem_destroy... но надо потестить (в др коде)... в коде под спойлером нет... здесь отметили
Кликните здесь для просмотра всего текста
In C/C++ the volatile keyword was intended to:
● allow access to memory mapped devices ● allow uses of variables between setjmp and longjmp ● allow uses of sig_atomic_t variables in signal handlers. Useful side effects: ● compiler can’t optimize out volatile access ● compiler can’t reorder volatile access relative to some other special access (e.g. another volatile access). Disadvantages: ● operations on volatile variables are not atomic ● compiler may reorder volatile access relative to regular variable access ● CPU may reorder volatile access relative to any other access (e.g. another volatile access). == цель этого поста - аргумент важности использования имеющихся библиотек, а не учебных примеров... в то же время, наметить кривую знакомства с потоками
0
|
|||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 04.06.2020, 16:01 [ТС] | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 04.06.2020, 17:57 [ТС] | |
|
p.s.
What exactly is std::atomic
stackoverflow_com /questions/31978324/what-exactly-is-stdatomic
про load(), store() & memory order , который появился с C++v.11 Добавлено через 9 минут Concurrency in C++11 (часть про Condition_Variables - в принципе их суть примерно, как и у семафора, - только появились они в Win7, на более ранних windows не работают вроде) Добавлено через 1 час 32 минуты ============== вобщем, читать manual и IEEE Std - The Open Group Base Specifications Issue
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 04.06.2020, 17:59 | |
|
JeyCi, возможно вам будет интересно:
http://scrutator.me/post/2012/... ld-p1.aspx http://scrutator.me/post/2012/... ld-p2.aspx http://scrutator.me/post/2012/... ld-p3.aspx
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 04.06.2020, 18:28 [ТС] | ||||
|
=====
и ответ
stackoverflow_com /questions/9660119/giving-an-id-to-semaphore
- в ключ - адрес семафора, в значение - линк... Но ведь так можно и просто мьютексами справиться... один мьютекс на один линк... Или каким макаром привязать семафор к конкретному сайту (все линки с одного сайта)... - ? надо сделать 1 семафор и все threads (с каждого линка) направлять на этот семафор?.. (если сделать его принимающим до 10 потоков, например)... тогда зачем std::map?.. sorry за кучу вопросов - но это наверно последний - чтобы сориентироваться для share_resources correctly... остальное буду искать в сети и на форуме Добавлено через 2 минуты === DrOffset, обязательно ознакомлюсь! спасибо!
0
|
||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||||||
| 04.06.2020, 18:40 | ||||||||||
Добавлено через 58 секунд Добавлено через 55 секунд
1
|
||||||||||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||
| 04.06.2020, 20:23 [ТС] | ||||
|
и el.second (item) у всех будет одинаковый, если семафор один... смысл такого словаря?
0
|
||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 04.06.2020, 20:25 | |
|
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
||||||||
| 04.06.2020, 20:48 [ТС] | ||||||||
|
p.s.
опять я поток на элемент примеряю, а ведь, действительно, может и несколько потоков на линк... всё время 1к1 равняю -- спасибо, что не устаёте править...Добавлено через 16 минут m_tasks и m_pool was not declared in this scope -- и действительно, по коду не вижу декларацию ![]() и почему-то
-- эту ошибку уж совсем не понимаю ( даже если using namespace std; ) и ещё несколько
0
|
||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 04.06.2020, 20:51 | |
|
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 04.06.2020, 21:10 [ТС] | |
|
error: 'bind' is not a member of 'std'
? что-то в include тоже нет
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 04.06.2020, 21:12 | |
|
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|
| 04.06.2020, 21:19 [ТС] | |
|
спасибо
запустила - но я взяла только сам классCTaskRunner и пример CThreadPool...буду примерять
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||
| 05.06.2020, 09:17 [ТС] | |||
|
ВЫВОД по многопоточности:
не путать понятия "данные" и "потоки"! P.S. оборачивать (если ещё не обёрнуто используемым классом) атомарные операции в <atomic>
0
|
|||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 05.06.2020, 10:57 | ||
|
2
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,549
|
|||||||
| 05.06.2020, 19:59 [ТС] | |||||||
в header'e <future>: // Disable copying ? т.е. неужели мы элементы вектора фьючей не сможем использовать в лямбде, например, функции std::accumulate ? (вероятно, функтор называется лямбда здесь)
0
|
|||||||
| 05.06.2020, 19:59 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её.
Всё это стресс конечно. Почему?. . .
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|