|
2 / 2 / 0
Регистрация: 03.06.2009
Сообщений: 102
|
||||||
реализация ThreadSafe функции24.07.2013, 14:23. Показов 3030. Ответов 37
Метки нет (Все метки)
Пишу статическую библиотеку функций, на основе которой разрабатывают приложения.
При создании многопоточных приложений на её основе начались проблемы. Думаю, что это связано с тем, что разные потоки мешаются друг другу, заходя в одну и туже функцию библиотеки. На первое время решил добавить в функции вот такую конструкцию:
Спасибо.
0
|
||||||
| 24.07.2013, 14:23 | |
|
Ответы с готовыми решениями:
37
|
|
2 / 2 / 0
Регистрация: 03.06.2009
Сообщений: 102
|
||||||
| 25.07.2013, 13:52 [ТС] | ||||||
|
Вроде бы понял.
Спасибо большое за книжку, почитаю. Добавлено через 20 часов 34 минуты подумав, понял что инициализацию и удаление надо из функций выносить и решил сделать так: 1. Переменные критических секций поля класса. 2. Инициализация при открытии устройства. 3. Использование в функциях. 4. удаление в функции закрытии устройства. В коде получается так:
Спасибо.
0
|
||||||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
| 25.07.2013, 13:54 | |
|
Я всегда так делаю
0
|
|
|
Ушел с форума
|
|
| 25.07.2013, 14:02 | |
|
0
|
|
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
||
| 25.07.2013, 14:21 | ||
|
Чота я невнимателен был, я не так делаю. Уменя обычно в конструкторах EnterCriticalSection(...), а в деструкторах DeleteCriticalSection(...).
Добавлено через 15 минут
0
|
||
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||
| 25.07.2013, 14:25 | ||
|
Собссна, я уверен, что пару раз поискав такие трудноуловимые баги в ночь перед релизом, ТС быстро придет к мысли об использовании RAII.....
0
|
||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|||
| 25.07.2013, 14:35 | |||
|
Всё-таки я считаю, что просто нужно взять привычку - не забывать. А то можно подумать, что забыть что-нибудь другое вполне приемлемо. Добавлено через 4 минуты
0
|
|||
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
| 25.07.2013, 15:01 | ||||||
|
Ну в данном то случае оно тривиально:
1
|
||||||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
||
| 25.07.2013, 15:16 | ||
|
А за идею спасибо
0
|
||
|
2 / 2 / 0
Регистрация: 03.06.2009
Сообщений: 102
|
|||
| 25.07.2013, 15:17 [ТС] | |||
|
0
|
|||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
| 25.07.2013, 15:20 | |
|
0
|
|
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|||||||
| 25.07.2013, 15:24 | |||||||
A::A() A::~A() s tvoih slov destructor doljen bit vizvan posle etoy stroki
0
|
|||||||
|
2 / 2 / 0
Регистрация: 03.06.2009
Сообщений: 102
|
||
| 25.07.2013, 15:26 [ТС] | ||
|
в RAII чуть позже постараюсь вникнуть. По первым впечатлениям вещь очень нужная. Спасибо!
0
|
||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
||||
| 25.07.2013, 15:29 | ||||
|
Добавлено через 1 минуту который Так может быть, всё таки не в идеологии дело, а втом что нужно учиться не забывать?
0
|
||||
|
|
|||||||
| 25.07.2013, 15:33 | |||||||
|
Praktolock,
0
|
|||||||
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 25.07.2013, 15:33 | |
|
Верно, забыл. Писал код прямо в редакторе форума. Виноват-с... :-(
0
|
|
|
Ушел с форума
|
||||
| 25.07.2013, 15:33 | ||||
|
Как только в коде появляются ветвления, такие ошибки начинают возникать на пустом месте. И во время внесения изменений (рефакторинг) с таким подходом будет очень легко напортачить, если использовать "голые" программные интерфейсы, не прикрытые RAII. Интерфейсы open-do-close хороши только в вырожденных случаях, сведенных к функциям в двадцать строк, где все на ладони и нет инвариантов. Кроме того, если во время использования "голого" интерфейса кто-нибудь кинет исключение, очистка ресурсов не будет выполнена и произойдет утечка. Так что без RAII никуда. А можно пользоваться ежедневником и напоминалками, освобождая мозг для других задач. Я предпочитаю второе.
0
|
||||
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
||
| 25.07.2013, 15:41 | ||
|
Впрочем я не пытаюсь сказать, что RAII это плохо. И в принципе на 95% согласен.
0
|
||
| 25.07.2013, 15:41 | |
|
Реализация функции принтф Реализация функции srcat. Реализация функции erase() Реализация функции strtok Реализация friend функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|