Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308

Велосипед вместо std::atomic на WinApi

15.09.2016, 17:23. Показов 1331. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно сабж. Есть у меня задание и в нем приписка "синхронизационная часть задачи должна использовать Win32 API". Думая как максимально независимо от компилятора реализовать сабж. Как-то использовать каждый раз критические секции больно жирно. Интересно ваше мнение.
ЗЫ: Прекрасно знаю про Interlocked-операции. Речь по суди по работу с флагом и memory ordering.

Добавлено через 18 минут
Пока склоняюсь к _aligned_malloc + LONG. Непонятно что делать с memory ordering.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.09.2016, 17:23
Ответы с готовыми решениями:

Как в стандартную функцию WinAPI передать тип данных std::string вместо char*?
Помогите пожалуйста. Мне надо в GetDlgItemText передать std::string. Как это можно сделать? Вижуалка говорит, что нельзя преобразовать...

Аналог std::cin в WinAPI ?
Подскажите: есть ли что-то похожее в WnAPI типа std::cin для консоли. Нашел только ReadConsoleInput, но эта функция только ловит события,...

Std::atomic vs std::mutex
class AtomicSome { private: std::atomic_bool _isReady; //not std::atomic_flag public: ...

4
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
15.09.2016, 22:38
Цитата Сообщение от shmkv Посмотреть сообщение
Непонятно что делать с memory ordering.
MemoryBarrier(), например (ставит full hardware fence).
А вообще, на Intel/AMD переупорядочивание инструкций не так много где может всплыть,
наиболее распостранен лишь один случай: store + load. А store+store, load+load или
load+store не переупорядочиваются.
1
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
16.09.2016, 03:14  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
MemoryBarrier()
Она с Висты, а у меня условие, что на XP тоже должно работать.
сделал так:
C++ (Qt)
1
2
3
4
5
#ifdef __MINGW32__ 
        asm volatile ("" : : : "memory");
#else //MSVC
        _ReadWriteBarrier();
#endif
только все это к компиляторам привязывает.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
16.09.2016, 10:05
Цитата Сообщение от shmkv Посмотреть сообщение
Она с Висты
MSDN нагло врет.
Этот макрос у меня еще в 5-ых версиях SDK есть, на XP все работает.
Они просто убрали поддержку XP, в том числе и из документации тоже.

Ну в крайнем случае можно самому написать по аналогии с MSDN, т.е.
__faststorefence на x64 и xchg на x86. Я подобные штуки вообще стараюсь
оборачивать в макросы COMPILER_FENCE() и HARDWARE_FENCE(), чтобы
сильно не привязываться к среде.

Цитата Сообщение от shmkv Посмотреть сообщение
_ReadWriteBarrier();
_ReadWriteBarrier() - это fence на уровне компилятора, он не спасет от store-load reordering.
2
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
16.09.2016, 13:24  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
MSDN нагло врет.
Ну не знаю. На MinWG у меня нет такого макроса. В MSVC, да работает, буду знать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2016, 13:24
Помогаю со студенческими работами здесь

Std::atomic и другие объекты
Добрый день! Подскажите пожалуйста можно ли создать std::atomic<std::vector<int> > myvector; Или же для таких объектов...

Пример о необходимости std::atomic
Изучаю std::atomic. Пытаюсь сделать пример, при котором приложение упадет, без использование std::atomic int i; void foo(){ ...

Стоит ли использовать std::atomic?
Доброго времени суток. Есть переменная в "поток 2" (назовем так) const volatile bool *pbCancelled;, являющаяся указателем на флаг ...

Std::atomic выбор конструктора
недавно коллега вкомитил строчку вроде этой std::atomic<int> at = 3; вкоммитил с чистой душой, потому как его пятнадцатая студия...

Std::atomic. Реализация свободного от блокировок стека
Всем привет. Читаю книгу Параллельное программирование на с++ в действии Энтони Уильямса, в ней он представляет реализацию свободного стека...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru