|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
||||||
Где нужно всунуть Критическую секцию для корректной работы18.10.2009, 21:12. Показов 2129. Ответов 18
Метки нет (Все метки)
Здравствуйте, есть такая проблема, точнее я полагаю, что она там есть. В обще при создании форм я достаю информацию из ИНИ файла. И иногда случается так что пишет, что идет попытка обращения к левой памяти, но программа не ложится, работает дальше. Посмотрев, что я дописывал последний раз увидел, что это обращение и чтение к тому же ИНИ файлу. В обще я так думаю, что иногда оно успевает и достает инфу раньше с первой формы, чем оно начинает читать файл в другой форме. А в другой раз не успевает или пытается прочесть во время того, как уже читается.
Это мое предположение. Подумал, что нужно разделить эти процессы, чтобы они не начинались одновременно и решил использовать Критические секции, но по причине отсутствия опыта работы с ними хочу вот спросить, куда их нужно пихать. Достаточно ли только в те места, где происходит считывание в первой форме и в другой.
0
|
||||||
| 18.10.2009, 21:12 | |
|
Ответы с готовыми решениями:
18
Передача указателя на критическую секцию
Программа вхождения и выхождения в критическую секцию.. |
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 19.10.2009, 10:35 | |
|
TGrey[WoLf], а зачем читать ини-файл в двух местах? и почему создается сразу две формы?
0
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 19.10.2009, 22:35 [ТС] | |
|
Такс ну для начала в ИНИ файле хранятся значения для установки Чекеров на формах. Поэтому из разных форм оно и читает. Сначала устанавливает в первой, потом во второй. Но поскольку я убрал ту часть и ошибка вроде, как пропала было хорошо, но после чего при тесте на другой машине снова появилась.
Почему 2 формы? Ну у меня приложение такое мультиформенное) У меня там 5 форм, просто чекеры нужно установить только на 2. Я не знаю, как Борланд создает формы и если потоками, то была идея, что оно не успевает считать для первой формы данные. Но, что я заметил, характерным признаком того, что вылезла ошибка остается тот факт, что программа продолжает работу, НО сокет уже отказывается производить конект к серверу. Поскольку все действия с сокетами и с данными я запихал в класс и класс создается в глобальной области 2 формы, после чего к нему начинают обращаться разные функции устанавливая его свойства. И тут меня посетила такая мысль, что возможно класс не успевает создаться до того, как к нему начинают обращаться, что вызывает ошибку обращения к памяти а в дальнейшем отказ в коннекте по причине отсутствия данных в классе. Теперь попробую проверить эту догадку. Было бы хорошо еще знать, как проверить создан ли объект. Попробую создавать его динамически и проверять указатель на Существование?!
0
|
|
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|
| 19.10.2009, 22:41 | |
|
TGrey[WoLf],
Где нужно всунуть Критическую секцию для корректной работы Засунь её в .... э-э.. как бы помягче выразиться... D в то место... в котором возможен множественный доступ. :LOL:
0
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 19.10.2009, 22:54 [ТС] | |
|
Не сомневаюсь в вашей компетенции, но там где-то вроде написано "по отсутствию опыта". Вот поэтому я бы и всунул ее в ... помягче куда-нибудь)) А потом вопрос по первому посту видимо отпадает. Буду проверять указатели на валидность. Может прокатит.
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 20.10.2009, 01:39 | |
|
TGrey[WoLf], на счет форм я не зря спросил... обе формы у вас в auto-create находятся или нет? а секция по идее должна быть одна, в главной форме инициализируется, а потом уже в нужных местах раставляете Enter и Leave...
0
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 20.10.2009, 16:00 [ТС] | |
|
Ну вот как Компилятор создает формы так и создает. Я там ничего не менял.
Насчет секции она должна быть одна и входить в нее одну? А то я думал 2 секции в разных участках кода и входить в них.
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 20.10.2009, 17:09 | |
|
TGrey[WoLf], сколько будет секций, столько и очередей на выполнение (вроде бы)... а вам посоветую перенести все же ненужные формы из auto-create и нужда в критических секциях по идее отпадет сама собой, если вы, конечно же, верно локализировали глюк
0
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 20.10.2009, 17:25 [ТС] | |
|
Как их перенести из auto-create и как создать в дальнейшем?
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 20.10.2009, 22:35 | |
|
перенести можно в свойствах проекта, создавать как и любой другой объект класса через new, например
0
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 20.10.2009, 23:52 [ТС] | |
|
Ясно. Буду пробовать. И все же Критические секции к примеру
CRITICAL_SECTION cs1,cs2; если в 1-й форме входить в 1-ю секцию, а в 2-й форме во 2-ю, то оно синхронизируются? Или надо в обоих случая в 1 секцию входить? Добавлено через 49 минут Вот. Добавил указатели, но ошибка осталась(( Но я забыл упомянуть, что когда компилятор ее выводит то оно показывает на файл _numpunct.h В строку string grouping() const { return do_grouping(); } Что оно может быть?
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 21.10.2009, 09:30 | |
|
TGrey[WoLf], на стандратную библиотеку не похоже... а ты еще попробуй с оконами поиграться, как я тебе писал...
0
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
||||||
| 21.10.2009, 19:45 [ТС] | ||||||
|
Да но все же по причине чего оно может быть, интересно.
То есть убрать от сюда код?
0
|
||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 21.10.2009, 20:07 | |
|
TGrey[WoLf], можно и тут, но лучше все же в свойствах проекта
0
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|||||||||||
| 22.10.2009, 22:31 [ТС] | |||||||||||
|
Окончательно обнаружил багу. Но справится, что не получается.
В методе Создания формы находятся строки
Оно просто отказывается создавать fstream, ofstream, ifstream. Сразу вылазит исключение. Хоть после Ребилда проекта до след раза все работает. Добавлено через 16 минут Пока использовал этот метод и вроде работает, но хотелось бы получить ответ, что с тем вариантом не то.
0
|
|||||||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
||
| 22.10.2009, 22:46 | ||
|
TGrey[WoLf],
0
|
||
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 22.10.2009, 23:16 [ТС] | |
|
Та я на все обрабатываю. Кстати я подумал о том, что почему во время создания формы оно крашит, а дальше же ведь в программе файлы открываются так же само и записывается в них инфа. Только подумал об этом, профиксил то. Запускаю программу оно доходит до момент, где должно записывать в файлы и тут тот же самый краш))
В общем я залез в свойства проекта и врубил обратно галочки Build with Runtime & Use dinamic RTL. Как я помню, это нужно отключать для работоспособности на других машинах, где нет Компилятора. Но если такая история получается, как оно тогда там будет работать-то ?!
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 22.10.2009, 23:44 | |
|
TGrey[WoLf], а без галочки работает без сбоев?
0
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 23.10.2009, 00:09 [ТС] | |
|
Наоборот, я их включил и работает как прежде. Даже с тем кодом, что вызывал краш.
Просто я тестировал программу на другой машине и выключал их, чтобы программа там работала.
0
|
|
| 23.10.2009, 00:09 | |
|
Помогаю со студенческими работами здесь
19
Написать программу с семафорами которая входит в критическую секцию Алгоритм Петерсона: почему поток не может два раза подряд выполнить критическую секцию? Реализовать критическую секцию на основе объекта синхронизации типа "событие" Как переделать функцию для корректной работы? Настройка и запуск VirtualBox для корректной работы ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|