@ProCxx

Страница 2205 из 2477
A.D.
16.07.2018
16:32:05
Max
16.07.2018
16:32:27
Иметь вариант shared_ptr с не атомарным счетчиком ссылок. Большинство объектов все равно не thread-safe и при работе с ними все равно придется выполнять какую-то синхронизацию.
Польза shared_ptr в однопоточном приложении сомнительна. А в многопоточном - неатомарный счётчик однажды может отстрелить обе ноги по самые ляхи. Необходимо синхронизировать не только работу с объектом, но и доступ к нему.

Google
Ignat
16.07.2018
16:35:00
А это как работает?
там атомарный счётчик, очевидно же

Руслан
16.07.2018
16:35:15
Выше сказали, что не атомарный

А. Я понял

Т.е он атомик

Dmitry
16.07.2018
16:35:53
Может имелось в виду что доступ к нему не атомарный.

Руслан
16.07.2018
16:35:58
Но тк не в обьекте, а снаружи, то можно остаться без яичек

Да?

Stanislav
16.07.2018
16:36:22
в С++20 уже норм с этим

Google
Stanislav
16.07.2018
16:36:25
The partial template specialization of std::atomic for std::shared_ptr<T> allows users to manipulate shared_ptr objects atomically.

Ignat
16.07.2018
16:37:00
её научились реализовывать не через глобальную хеш-таблицу локов?

Руслан
16.07.2018
16:38:06
Там глобальная хеш таблица?

Так атомик shared_ptr или нет оо

Шта там происходит

Stanislav
16.07.2018
16:38:59
Так атомик shared_ptr или нет оо
All atomic types except for std::atomic_flag may be implemented using mutexes or other locking operations, rather than using the lock-free atomic CPU instructions. Atomic types are also allowed to be sometimes lock-free, e.g. if only aligned memory accesses are naturally atomic on a given architecture, misaligned objects of the same type have to use locks. The C++ standard recommends (but does not require) that lock-free atomic operations are also address-free, that is, suitable for communication between processes using shared memory. как сделают так и будет лол

Dmitry
16.07.2018
16:40:21
Так атомик shared_ptr или нет оо
Счётчик атомарный. Но писать читать в один ptr конкурентно нельзя. Потому что при этом надо атомарно менять и счётчик и сам указатель.

Dmitry
16.07.2018
16:42:35
Значение счетчика в указателе или для чего менять указатель?
Переписать ptr = заменить его на новый плюс декремент для счётчика старого. Гонка.

Andrey
16.07.2018
16:45:10
Так атомик shared_ptr или нет оо
concurrently дергать non-const методы у одного экземпляра shared_ptr нельзя, у разных копий указывающих на один объект — можно.

Руслан
16.07.2018
16:46:47
Переписать ptr = заменить его на новый плюс декремент для счётчика старого. Гонка.
Замена на новый откуда? Я полагал там указатель на область памяти, где лежит счетчик и пойнтер на обьект, структурка, и это место как-то не меняется?

Гонку так вижу, но откуда замена

Ilia
16.07.2018
16:48:19
Именно

Dmitry
16.07.2018
16:48:47
Гонку так вижу, но откуда замена
Нет, при условии безопасности передачи между потоками всё можно. Например в контекст потока хоть через копирование, хоть через перемещение.

Серж
16.07.2018
16:49:20
20.8.2.6 shared_ptr atomic access [util.smartptr.shared.atomic] Concurrent access to a shared_ptr object from multiple threads does not introduce a data race if the access is done exclusively via the functions in this section and the instance is passed as their first argument.

Dmitry
16.07.2018
16:49:54
Но вот за попытки завести глобальный смартптр и конкурентно читать/писать будут бить :)

Google
Alexey
16.07.2018
17:17:28
а, т.е. стандарт запрещает, но есть флаг в реализаии некоторых компиляторов, где ты явным образом разрешаешь?
-fassociative-math Allow re-association of operands in series of floating-point operations. This violates the ISO C and C++ language standard by possibly changing computation result.

Joiuer
16.07.2018
19:42:03
Где взять шпаргалку для программирования ,библиотеки и все что они содержат ,а рядом пояснение ,что делает и тд. ?

Искал не нашел

Joiuer
16.07.2018
19:44:01
Допустим,где найти всё и все о с++

Полный список о с+

Крис
16.07.2018
19:49:03
Полный список о с+
Верхняя оценка - Все что когда-либо было написано о плюсах, процентов 90 в инете. Универсальной шпаргалки нет. Можно почитать стандарт, там есть детали языки и о стандартной либе

Побитый
16.07.2018
19:51:03
Искал не нашел
Лол, cppreference

Крис
16.07.2018
19:51:48
Лол, cppreference
Думаю, он не об этом

Cheat Sheet какой-то нужен я думаю)

Побитый
16.07.2018
19:52:19
Думаю, об этом)

Допустим,где найти всё и все о с++

Крис
16.07.2018
19:52:41
Ну ладно(

Побитый
16.07.2018
19:52:46
Плюс там оформление очень близко к шпаргалке

Владислав
16.07.2018
20:48:56
Уважаемые, подскажите ворк к c++ для gui для новичка... Метаюсь между qt/wxW/gtk. Уже второй день не могу определиться. Или же есть способ cli оседлать?

Mikhail Voronov
16.07.2018
20:57:07
guys, гляньте вопрос плиз: https://toster.ru/q/546604
вроде самый верхний ответ по делу и других причин делать так особо нет

Azoyan
16.07.2018
21:10:39
Объясните https://ideone.com/OePeRz почему игнорирует?

Аттрибутивно-ассоциативный ряд
16.07.2018
21:12:20
Владислав
16.07.2018
21:26:07
Qt
На qt как полагаю можно и оставаться на совсем?

Google
Владислав
16.07.2018
21:26:32
Mikhail Voronov
16.07.2018
22:22:56
Объясните https://ideone.com/OePeRz почему игнорирует?
потому, что float сначала implicitly кастится к double, а потом результат берётся по константной ссылке. Если у f будет тип double, то, по идее, значение должно поменяться.

Azoyan
16.07.2018
22:24:37
Ты описал код, но не сказал почему не меняется.

Mikhail Voronov
16.07.2018
22:35:01
Azoyan
16.07.2018
22:37:43
https://ideone.com/aeIasD
А в чем причина то))

Mikhail Voronov
16.07.2018
22:37:45
Ты описал код, но не сказал почему не меняется.
при кастинге создаётся временный объект (prvalue, предпоследний случай в категории prvalue отсюда - https://github.com/jeaye/value-category-cheatsheet/raw/master/value-category-cheatsheet.pdf), который потом модифицируется

Azoyan
16.07.2018
22:40:01
Отдушибрат!

Stolyarchuk
16.07.2018
23:50:54
@anatolijs , прошу принять извинения, коллеги.. день сегодня не очень.. но выливать это сюда - с моей стороны тоже не самый хороший поступок. Мир

Ivan
17.07.2018
04:37:58
Добрый день. Возможно, это слишком простые вопросы, но в supapro не получил ответа. 1. Как правильно использовать seed_seq для инициализации mt19937_64? У меня есть 4 числа в std::array, которые являются источником энтропии. На данный момент делаю таким образом std::array<std::uint64_t, 4> arr {1, 2, 3, 4}; std::seed_seq seeds (arr.begin(), arr.end()); std::mt19937_64 gen(seeds); Но надежно ли такое решение? В некоторых примерах набор seed состоит из 312 (mt19937::state_size) элементов. 2. Также иногда встречается метод generate класса seed_seq, который заполняет контейнер. Но я немного не понимаю его смысл. Нужно инициализировать seed_seq и с помощью generate заполнить контейнер из 312 элементов, инициализировать новый seed_seq этим контейнером и, наконец, передать его mt19937_64? Звучит ужасно и выглядит как костыли.

Ilia
17.07.2018
04:50:49
Где взять шпаргалку для программирования ,библиотеки и все что они содержат ,а рядом пояснение ,что делает и тд. ?
У конкретного проекта библиотеки есть хоум Пейдж, там есть документация по её API.

Страница 2205 из 2477