Size: a a a

2020 August 24

IZ

Ilia Zviagin in pro.cxx
Andrei K
Но в целом да, не надо пользоваться std::map в многопоточке.
Почему же, можно, но при определенных условиях
источник

R

Ruben in pro.cxx
Andrei K
Но в целом да, не надо пользоваться std::map в многопоточке.
Почему? Можно же мьютексы заюзать при доступе
источник

AK

Andrei K in pro.cxx
Ilia Zviagin
Почему же, можно, но при определенных условиях
Я имел в виду, нельзя без синхронизации.
источник

IZ

Ilia Zviagin in pro.cxx
Ruben
Почему? Можно же мьютексы заюзать при доступе
Можно и нужно.
источник

AK

Andrei K in pro.cxx
А константные методы и методы не изменяющией стейт мапы — на здоровье, конечно.
источник

IZ

Ilia Zviagin in pro.cxx
Andrei K
Я имел в виду, нельзя без синхронизации.
Без синхронизации можно только если контейнер read only во всех потоках
источник

AK

Andrei K in pro.cxx
Короче все всё правильно поняли.
источник

m

magras in pro.cxx
Ruben
У std::list еще и итераторы не инвалидируются при вставке/удалении элементов, за исключением того, на который указывает итератор
Но ходить по листу во время его модификации все равно нельзя.
источник

R

Ruben in pro.cxx
Да
источник

R

Ruben in pro.cxx
Но сохранять итератор на элемент, при условии что его не удалят, можно
источник

T

Ternvein in pro.cxx
Wild_Wind
Это сурсы самого годота.
Но используя его, ты пишешь на GScrip. Есть возможность вызова GDNative - нативных либ.

Напрямую, использовать в годоте плюсы невозможно (это было крайне паршивым архитектурым решением, пусть и снизило порог входа).
Это не так. Метода аж два, включая сам GDNative, являющийся по факту просто динамически прилинкованной либой на любом языке, умеющим в динамические библиотеки. Включая плюсы.
источник

LY

Leonid Yuriev in pro.cxx
Кто-нибудь встречал хорошую/быструю реализацию функции сравнения двух ПРОИЗВОЛЬНЫХ msgpack-ов?

Всё либы что я нагуглил - только (де)сериализаторы с различным кол-вом рюшечек, но без реализации сравнения.
Подобное сравнение есть внутри Tarantool, но со своими заморочками, а главное  поддерживается только нужное подмножество типов полей msgpack.
?
источник

m

magras in pro.cxx
Leonid Yuriev
Кто-нибудь встречал хорошую/быструю реализацию функции сравнения двух ПРОИЗВОЛЬНЫХ msgpack-ов?

Всё либы что я нагуглил - только (де)сериализаторы с различным кол-вом рюшечек, но без реализации сравнения.
Подобное сравнение есть внутри Tarantool, но со своими заморочками, а главное  поддерживается только нужное подмножество типов полей msgpack.
?
А там не достаточно memcmp?
источник

W

Wild_Wind in pro.cxx
Ternvein
Это не так. Метода аж два, включая сам GDNative, являющийся по факту просто динамически прилинкованной либой на любом языке, умеющим в динамические библиотеки. Включая плюсы.
Что-то не нахожу оные в доке.
Можно линк?
источник

LY

Leonid Yuriev in pro.cxx
magras
А там не достаточно memcmp?
Нет.
- Могут быть разные типы полей и null (0xc0) должен быть меньше других.
- Еще целочисленные типы разной разрядности и signed/unsigned.
- Плюс желательно уметь сравнивать double/float с целочисленными типами.

Т.е. кроме самой реализации еще неплохо бы иметь продуманную шпаргалку как именно следует сравнивать поля разных типов.
источник

AF

Aidar Fattakhov in pro.cxx
Artöm Bakri Al-Sarmini
std::map::operator[] безопасно вызывать для разных уже существующих элементов из разных потоков
Хз, правда ли что например стдлиба не может вести подсчет обращений к []?
источник

AF

Aidar Fattakhov in pro.cxx
Кажется "не изменять сам контейнер" это дичь какаято с точки зрения внешнего интерфейса
источник

AF

Aidar Fattakhov in pro.cxx
Очевидно [] изменяет контейнер, он же не помечен const
источник

AF

Aidar Fattakhov in pro.cxx
Другое дело что ты итераторы сохранить можешь куданибудь и ходить через них
источник

K

Konstantin in pro.cxx
есть же const перегрузка
источник