|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 34508. Ответов 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,554
|
|||
| 03.06.2020, 18:28 [ТС] | |||
а задачи (очередь задач)? работающие асинхронно ? - в многопоточном приложении ? на компе с одним ядром...- это ведь и есть конкурентность... vs. параллелизм - на несколько ядер... хотя если породить потоков больше, чем ядер(-1, т.к. 1 для главного потока) - то и потоки встанут в очередь... p.s. хотя если бывают такие процессы, которые параллелятся не через ядра (мало ли какой сигнал с какого датчика на какой дивайс?)... то и в очередь становИться некуда будет... но семафором (как счётчиком ресурсов) - контролировать можно будет... пока так понимаю... Добавлено через 5 минут
0
|
|||
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 03.06.2020, 18:37 | |
|
JeyCi, смотрите на уровень абстракции.
Для компьютера с одним ядром истинного параллелизма нет. Но он (параллелизм) есть для прикладной программы, которая сделала себе, например, два потока. На ее уровне у нее есть параллелизм этих потоков, если они (в абстракциях этой программы) не конкурируют за ресурсы.
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 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,554
|
|||||||||
| 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,554
|
|
| 04.06.2020, 16:01 [ТС] | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|
| 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
|
|
|
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 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,554
|
||||
| 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,554
|
||||
| 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,554
|
||||||||
| 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,554
|
|
| 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,554
|
|
| 04.06.2020, 21:19 [ТС] | |
|
спасибо
запустила - но я взяла только сам классCTaskRunner и пример CThreadPool...буду примерять
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
|||
| 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,554
|
|||||||
| 05.06.2020, 19:59 [ТС] | |||||||
в header'e <future>: // Disable copying ? т.е. неужели мы элементы вектора фьючей не сможем использовать в лямбде, например, функции std::accumulate ? (вероятно, функтор называется лямбда здесь)
0
|
|||||||
| 05.06.2020, 19:59 | |
|
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мобильное приложение 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, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|