Vladislav
как сейчас в boehm сделано?
Aidar
В D, go есть же
Aidar
Или где там
Anatoly
babysitter
http://www.hboehm.info/gc/
Aidar
Они тоже статически линкуются
Anatoly
http://www.hboehm.info/gc/
"garbage collecting replacement for C malloc or C++ new. " Спасибо тебе :))
Denis
сапэпро наводнили непонятым спамам, так что тут спрошу
Denis
Понадобилась структура данных Trie. Префексное дерево
Denis
Гуглил всю ночь, и нагуглил одну реализацию, которая страшно выглядит
Denis
Может есть в бусте что-то похожее?
Cinder
rc!=gc
rc gc - форма gc. Это в том числе мнение сатера
Cinder
рк просто не может в сборку мусора с циклическими ссылками
cyber
https://habrahabr.ru/post/282544/
на тему gc в с++
Cinder
Любой указатель внутрь выделенной области держит эту область. Я даже больше скажу: любая последовательность байт, которую можно интерпретировать как указатель держит область, в которую указывает. И кресты тут не причём. В сишке также. Это конструкция недогц боехемгц
Cinder
как сейчас в boehm сделано?
Anatoly
Я считаю иначе. И реализовать его для плюсов полноценно вряд ли удастся.
Anatoly
И не нужно
Vladislav
Vladislav
babysitter
это такой ответ ради ответа. очевидно, что умные указатели — это гк, но говорить об этом в разговоре про нормальный сборщик даже смысла не вижу.
babysitter
Anonymous
++
Cinder
Cinder
стека
Vladislav
babysitter
Может есть в бусте что-то похожее?
я когда-то тоже гуглил. раз ты ночь гуглил, то наверное знаешь даже больше, чем я. вот эту еще находил, она вроде не такая мертвая
https://github.com/ytakano/radix_tree
Крылатый
https://medium.com/@phostershop/building-a-c-hybrid-spin-mutex-f98de535b4ac#.6lf3aanpb
Square
а вот тут рекомендую про локфри, атомики и скорость!
http://moodycamel.com/blog/2014/detailed-design-of-a-lock-free-queue
🦥Alex Fails
Mikhail
Личное мое имхо. Чем возиться с этими lock free структурами данных проще разобраться как реализовывать кооперативную многозадачность на плюсах и делать количество потоков равное количество ядер, и каждое независимо от другого. А внутри потоков все раскинуто по эвентам.
Mikhail
А так эти лок фрии структуры поощеряют потоковый ад внутри приложения
Artem
https://twitter.com/HookTM/status/807622367144865793
Mikhail
Square
Square
Когда тебе надо чертовски быстро
Mikhail
Ну во первых не нужно данные между потоками гонять
Square
А вообще мне атомики полюбились, особенно если билдить интеловским компилем - на xeon'ах в 2-3 раза быстрее
Square
Mikhail
а во вторых не встречал я такие задачи, в которых обычные мьютексы не прокатят
Square
Square
Но если задача выжать максимум из железа
Square
Например разбирать 10ge на лету :D
Square
Я поделился тем, что считаю достойным
Square
А статья там реально годная
Mikhail
Хорошо, допустим что тебе нужна максимальная производительность. Во первых, если количество потоков больше количества ядер - ты быдешь тратить дополнительное время на переключение процесса. Во вторых, у ядер процессора нет доступа напрямую ко всей оперативной памяти, есть только свой участок, или его вообще нет, и тогда он обращается к памяти через соседнее ядро.
Mikhail
И хорошо если требуемая память будет в прямом доступе у соседнего ядра, а не у еще соседнего
Artem
была у меня схожая задача. Нормальная буферизация по писателям + мьютексы победили решение с локфри
🦥Alex Fails
Square
Mikhail
о. второе - это же нума
Так и что? Я к тому, что если ты шаришь данные между потоками, эти данные все равно будут находить я определенном доступе ядра. А если ты создашь несколько потоков на одном ядре, будешь терять время на переключение контекста
🦥Alex Fails
дак я не спорю)
Mikhail
в то время как кооперативная многозадочность эти проблемы не создает
🦥Alex Fails
можно совместить N тредов на N ядер и локфри
Mikhail
🦥Alex Fails
достойный компромисс)
Mikhail
Речь шла о максимальной производительности
Square
Ибо hyperthreading
Mikhail
так вот она доступна только при количестве ядер равное количеству потоков и отсутсвия общих данных между потоками
Alexey
Mikhail
Square
Mikhail
Определенный поток определенному ядру
Mikhail
и потоки
Square
Affinity*
Mikhail
по крайней мере через апи системы точно
Mikhail
как там в современном с++ не знаю
Mikhail