Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Просмотр системных вызовов Windows https://www.cyberforum.ru/ cpp/ thread3003947.html
Возникла задача логировать все системные вызовы некой (заранее выбранной) программы при помощи C++. Знаю, что для линукс есть ptrace, при помощи которой +- модно реализовать подобное, но вот как реализовать это на Win10 - вопрос. Так вот, при помощи чего можно это реализовать? (думал о винхуках, но вот тоже непонятно как все таки просматривать системные вызовы).
Объясните, пожалуйста, как методы базового класса наследуются в производный при виртуальном наследовании C++
class TA { protected: int Fix; public: TA() { cout << "Inside A\n"; } TA(int fix) :Fix(fix) { cout << "Inside TA int\n"; } void Print() { cout << "Ya TA\n"; } };
C++ Выполнение кода внутри DllMain Видел несколько примеров проектов, которые по разному реализовывали одно и то же. Хотел бы узнать, как более правильно? Привожу пример. Допустим, есть библиотека для хуков функций Microsoft Detours и есть точка входа DllMain. BOOL APIENTRY DllMain(HINSTANCE pHandle, DWORD reason, LPVOID pReserved) { switch (reason) { case DLL_PROCESS_ATTACH: break; https://www.cyberforum.ru/ cpp/ thread3003918.html C++ Чтение файла побайтово Есть следующий код #include <iostream> #include <fstream> using namespace std; int main(int argc, char* argv) { if (argc < 2) https://www.cyberforum.ru/ cpp/ thread3003282.html
C++ Ассоциативный массив
Есть следующий код: typedef struct Character { int codePoint, x, y, width, height, originX, originY, advance; } Character; static Character characters_Roboto = { {' ', 273, 83, 3, 3, 1, 1, 8}, {'0', 117, 58, 18, 25, 0, 24, 18},
C++ Присоединение к процессу https://www.cyberforum.ru/ cpp/ thread3002881.html
Помогите, хз как это исправить
C++ "ГРАФЫ" лаба https://www.cyberforum.ru/ cpp/ thread3002649.html
Всем здраствуйте))) Ребят, помогите мне пожалуйста, учебное пособие прочитал по теме "Графы", но я ничего не понял как вообще эта беда делается.........у меня последняя лаба перед сессией, а я хз как ее делать!!!(((( Прошу помогите пожалуйта, уверен что для вас это не составит труда, так как вы опытные и лучше знаете сам язык....... приложу документ.......там все условия, если что то нужно...
транспортная задача C++
Предприятие осуществляет сбыт продукции в n-1 торговых пунктах. Известны транспортные затраты Сij, i=1..n, j=1..n на перемещение из каждого пункта в каждый, включая пункт производства. Сбыт продукции осуществляется не более, чем К машинами. Каждая машина выезжает из пункта производства, посещает часть пунктов сбыта и возвращается в исходный пункт. Транспортные затраты на маршрут каждой...
C++ Ошибка LINK 2019 Доброго времени суток Пытаюсь написать тестовую программу для Poco Project #include <iostream> #include <fstream> #include "Poco/Environment.h" #include <string> #include <Poco/Crypto/CipherKey.h> #include <Poco/Crypto/Cipher.h> https://www.cyberforum.ru/ cpp/ thread3001288.html C++ Segmentation fault при вызове std::vector::insert Создаю вектор, резервирую память, пробую вставить число 42, получаю segmentation fault. std::vector<int> vec; vec.reserve(100); vec.insert(vec.begin() + 10, 42); Как можно зарезервировать память после инициализации вектора по умолчанию перед вызовом std::vector::insert? https://www.cyberforum.ru/ cpp/ thread3001284.html
C++ fopen return NULL
Добрый день. Получаю "Assertion `file != nullptr && "fopen return null"' failed" по непонятной мне причине, прошу помочь. Ассерт срабатывает достаточно редко, один раз в несколько дней. Код: while (m_continue.load(std::memory_order_relaxed)) { // ....
C++ .lib не является приложением win32 Прописана статическая библиотека с функциями также есть хедр. Командная строка сразу закрывается. https://www.cyberforum.ru/ cpp/ thread3000750.html
1 / 1 / 0
Регистрация: 08.08.2021
Сообщений: 18
05.07.2022, 10:59  [ТС] 0

Энтони Уильямс. - 7.2.5. Применение модели памяти к свободному от блокировок стеку - C++ - Ответ 16339226

05.07.2022, 10:59. Показов 2771. Ответов 4
Метки (Все метки)

Ответ

Цитата Сообщение от zayats80888 Посмотреть сообщение
Проще говоря, в случае, если значение до декремента было 1, то это последняя rmw операция, а значит можно поставить барьер и вызвать деструктор.
Очень хороший ответ на вопрос, спасибо большое!

Нам необходимо по словам автора предотвратить гонку за данными, и для этого мы должны гарантировать, что swap() происходит-раньше delete.
Я понял, что барьер ptr->internal_count.load(std::memory_order_acquire); не нужен для последней rmw операции (нужен для другой цели), так как срабатывает исправно даже с расслабленной моделью памяти.
Обнуление счётчика уже является гарантией того, что только один поток может вызвать операцию delete, так как декремент атомарен - это легко понять - но это не есть цель автора.

Если не окажется затруднительным, помогите, пожалуйста, ответить на эти вопросы:

1) Тогда с какой целью нужно ставить Как именно этот барьер даёт необходимую гарантию того, что swap() происходит раньше операции delete?
2) Разве не должно использоваться отношение происходит-раньше между swap() и delete (для реализации которого используется цикл), вместо отношения синхронизируется-с?

Вернуться к обсуждению:
Энтони Уильямс. - 7.2.5. Применение модели памяти к свободному от блокировок стеку C++
0
Заказать работу у эксперта
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2022, 10:59
Готовые ответы и решения:

Недостаточно памяти стеку протоколов Tcp/ip
Господа гуру! Кто может подсказать причину возникновения ошибки - &quot;Недостаточно памяти стеку...

Применение модели потенциальной ямы
Здравствуйте! Подскажите, пожалуйста, где возможно применение модели одномерной глубокой...

Применение кратной детерминированной модели
Доброе время суток . Нужно составить небольшой пример где будет разобрано применение кратной...

Применение С++ модели (QObjectList) вместе с Qt Quick
В Examples есть замечательный пример в папке: Qt\Examples\Qt-5.7\quick\models\objectlistmodel...

4
05.07.2022, 10:59
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.07.2022, 10:59
Помогаю со студенческими работами здесь

Применение объектно-ориентированной модели программирования
Применение объектно-ориентированной модели программирования Объект: Отрезок Количество объектов:...

Применение анимации к модели, созданной в 3Dmax
Сделал анимацию в 3д максе,создал эту же модель, как применить в юнити анимацию к моей модели...

Применение проверки достоверности к классу модели созданной entity framework
не могу понять почему не работает.Я его прописал в моделе сформированной entity framework ...

Применение Динамического выделения памяти
Надо решить задачу написав функцию. Нужно выделить память использую malloc. Помогите Плиз..!...

Работа кода из листинга из книги Энтони Уильямса
Всем привет, пытаюсь понять довольно сложную для меня тему, а именно барьеры памяти. И вроде...

Поиск картинки по свободному полю со списком
Мучаюсь третий день,никак не могу сообразить.Может местные асы помогут. Суть такая есть таблица с...

Запись к свободному сотруднику в свободное время
Добрый вечер! Есть база данных, в которой есть таблица с сотрудниками, их графиком работы (он у...

0
Новые блоги и статьи
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
Как добавить пустую директорию в репозиторий Git
bytestream 22.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо сохранить пустую директорию в репозитории. Данная задача может показаться простой на первый. . .
Как валидировать адрес email в JavaScript
bytestream 22.01.2025
JavaScript, как основной язык веб-разработки, предоставляет разработчикам множество инструментов для реализации эффективной валидации email-адресов. От простых встроенных решений до сложных. . .
Как заменить все вхождения подстроки в JavaScript
bytestream 22.01.2025
Строки в JavaScript представляют собой неизменяемые последовательности символов, что делает их обработку особенно интересной с точки зрения оптимизации и выбора правильного подхода к решению задач. . . .
Управление версиями пакетов в Node.js. В чем разница между тильдой (~) и кареткой (^) в package.json
bytestream 22.01.2025
В современной разработке программного обеспечения управление версиями пакетов играет ключевую роль в обеспечении стабильности и надежности проектов. Node. js, как одна из самых популярных платформ для. . .
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru