|
2 / 2 / 0
Регистрация: 03.06.2009
Сообщений: 102
|
||||||
реализация ThreadSafe функции24.07.2013, 14:23. Показов 2992. Ответов 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 функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой
Зрите в корень - монополизация на разработку программ. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|