|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
|
||||
Архитектура: парсинг и выгрузка текстовиков11.03.2020, 10:51. Показов 35851. Ответов 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 / 2464
Регистрация: 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 / 2464
Регистрация: 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 архитектура драйвера и архитектура приложения" Архитектура бд Архитектура БД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы.
Карта этого меню приложена ниже.
Нужный пункт выделен красным.
Сервис
Настройки
Поведение
|
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки.
Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён".
Изменено отображение буквы Й.
Добавлена. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|