Вроде все правильно написано, но с другой стороны зачем? Классическая книга Ричарда Стивенса, изданная в 1994 году, покрывает эти и еще многие другие случаи гораздо подробнее и с детальным анализом tcpdump. Да она и написана интереснее на мой вкус.
Я надеялся увидеть обзор новых фишек TCP, которых с тех пор появилось множество и которые нигде систематически не описаны, но увы...
А не посмотрите реализацию std::experimental::atomic_shared_ptr?
Ну, если то что я вижу это апдейтнутая версия, то там ничего нового не добавлено, просто враппер вокруг стандартных std::atomic_… свободных функций. Пока больше похоже на заготовку на будущее.
Естественно я рассматривал случай weak_ptr, в пост добавлять не стал чтобы не загромождать ненужными деталями. Валится точно так же, и механизм тот же, даже lock() не требуется. Вообще-то могли бы и проверить перед тем как постить.
Согласен, я в общем и пытался продемонстрировать что имеется ввиду в этом утверждении.
Но, кстати, ваша формулировка тоже неоднозначна, что значит "могут безопасно указывать"?
Я рад что вам хорошо, но радуетесь вы зря. Так или иначе, во всех языках есть подобные конструкции и под капотом они устроены примерно одинаково. Так что если вас полностью устраивает то что вы имеете, вам просто не нужно максимальной эффективности или вы просто не копали глубоко.
compare_swap был и остается единственным условным атомарным оператором, без него вам ни одого нетривиального алгоритма не создать. Да, он сразу же переводит алгоритм в класс waiting, но как правило это не фатально, те же виртуальные функции вовсю используются в реализации.
Вообще, я препочитаю стандарты не обсуждать а понимать. В часности при создании std::shared_ptr был выбран очевидный баланс между тяжеловесностью реализации и универсальностью.
Ну наверное вы в чем-то правы, но вообще пост не о lock-free — просто попытка разобраться из любопытства что именно мешает std::shared_ptr<> быть thread safe. Тема неблокирующих алгоритмов возникает фактически только потому что атомарные операции там уже присутствуют при работе со счетчиком.
Спасибо за настоятельную рекомендацию, только что вас заставляет думать что я ее не читал?
И, да, мне действительно было интересно и полезно, но уже довольно давно, поскольку книга вышла в 2012
Постановку задачи я в самом начале описал, и проблема вполне реальная. Я уже измерял когда-то, каждая блокировка на мьютексе занимает 40 микросекунд. Вот в тех нечастых случаях когда это время критично и требуются неблокирующие алгоритмы.
В новом это в котором? Это не вот это?: /usr/include/c++/5.4.0/bits/shared_ptr_atomic.h
Но он к сожалкнию блокирующий, маленькое лукавство — atomic не обязательно подразумевает non blocking.
Сьерра-Невада это горы, совсем другой климат чем в равнинной Калифорнии, там достаточно высоко, прохладно и высокая влажность из-за океанских муссонов, ни разу не пустыня. Там растут в основном хвойные породы — сосна, ель и уникальная секвойя. Вот на восточных склонах, которые к Неваде обращены — там да, песок, камень и кактусы.
Извините конечно, но это бред сивой кобылы в стиле самых укуренных алармистов.
а прикинули вклад коровьего метана в глобальное потепление? Он очевидно исчезающе мал. Давайте кстати и слонов истребим, они большие и тоже наверное вкладывают.
а сравнили с ущербом экологии если вдруг линия побережья начнет массово использоваться под водорослевые плантации? учесть надо все — от массового вымирания местных видов из-за изменения пищевого баланса до изменения береговой линии из-за активных строительных работ
а подумали почему именно Греция и Исландия? Да там как раз трава-то и не особенно растет. От голода это все, а не от великой исландской мудрости
а оценили влияние на экономику и фермерские хозяйства? Если сейчас мелкие фермеры сами заготовляют сено или покупают у соседей и работают почти по замкнутому циклу, то теперь им придется встроиться в длинную промышленную цепочку. Боюсь что на небольших хозяйствах это скажется фатально.
а так обожаемые экологистами свободно пасущиеся коровы? После перехода на покупные водоросли нет никакого резона пускать их гулять, пусть всю жизнь в стойле стоят
а какой-такой состав у этих водорослей? Там наверняка полно всяких морских микроэлементов, они в малых дозах очевидно полезны, но если практически ими одними питаться? Недавно здесь же аргументированно писали что интенсивное удобрение навозом может привести к отравлению нитратами, здесь состав еще более экзотический.
а если тому же экологисту сказать что теперь его будут поить молоком с бромоформом? Подозреваю что вилы потом придется из задницы долго выковыривать
а вообще, долговременные последствия кормления коров водорослями кто-то проверял? А вы знаете что первые случаи массового отравления молоком наблюдались в США и Канаде после перехода на кормление дешевым жмыхом сахарного тростника (привет сухому закону). Коровы говорят тоже жили крайне недолго, но все окупалось за счет дешевизны корма (привет резкому изменению отраслевой экономики)
В общем как хотите, а я патентую торговый лэйбл "Без бромоформа", наверняка будет очень популярен.
Ага, точно. Называется "использование внутренней жабы в мирных целях". Процентов нв 40 я тоже на этом вылез, а главное — сейчас очень помогает в моменты искушений.
Блестяще и действительно не скучно. Я раньше дfже не подозревал что в sed есть модификатор /e
Вроде все правильно написано, но с другой стороны зачем? Классическая книга Ричарда Стивенса, изданная в 1994 году, покрывает эти и еще многие другие случаи гораздо подробнее и с детальным анализом tcpdump. Да она и написана интереснее на мой вкус.
Я надеялся увидеть обзор новых фишек TCP, которых с тех пор появилось множество и которые нигде систематически не описаны, но увы...
Ссылки интерсные, спасибо. Отпишусь когда прочитаю.
Ну, если то что я вижу это апдейтнутая версия, то там ничего нового не добавлено, просто враппер вокруг стандартных std::atomic_… свободных функций. Пока больше похоже на заготовку на будущее.
Естественно я рассматривал случай weak_ptr, в пост добавлять не стал чтобы не загромождать ненужными деталями. Валится точно так же, и механизм тот же, даже lock() не требуется. Вообще-то могли бы и проверить перед тем как постить.
кстати, "стоковым на Java" сейчас по слухам вообще никто не занимается
пинганул, сейчас он напишет
М-да? А если будет придуман новый алгоритм, лучший во всех отношениях, и в расте он не появится? Это хорошо или наоборот плохо?
Согласен, я в общем и пытался продемонстрировать что имеется ввиду в этом утверждении.
Но, кстати, ваша формулировка тоже неоднозначна, что значит "могут безопасно указывать"?
Я рад что вам хорошо, но радуетесь вы зря. Так или иначе, во всех языках есть подобные конструкции и под капотом они устроены примерно одинаково. Так что если вас полностью устраивает то что вы имеете, вам просто не нужно максимальной эффективности или вы просто не копали глубоко.
compare_swap был и остается единственным условным атомарным оператором, без него вам ни одого нетривиального алгоритма не создать. Да, он сразу же переводит алгоритм в класс waiting, но как правило это не фатально, те же виртуальные функции вовсю используются в реализации.
Вообще, я препочитаю стандарты не обсуждать а понимать. В часности при создании std::shared_ptr был выбран очевидный баланс между тяжеловесностью реализации и универсальностью.
Ну наверное вы в чем-то правы, но вообще пост не о lock-free — просто попытка разобраться из любопытства что именно мешает std::shared_ptr<> быть thread safe. Тема неблокирующих алгоритмов возникает фактически только потому что атомарные операции там уже присутствуют при работе со счетчиком.
Спасибо за настоятельную рекомендацию, только что вас заставляет думать что я ее не читал?
И, да, мне действительно было интересно и полезно, но уже довольно давно, поскольку книга вышла в 2012
ошибся веткой
Постановку задачи я в самом начале описал, и проблема вполне реальная. Я уже измерял когда-то, каждая блокировка на мьютексе занимает 40 микросекунд. Вот в тех нечастых случаях когда это время критично и требуются неблокирующие алгоритмы.
В новом это в котором? Это не вот это?: /usr/include/c++/5.4.0/bits/shared_ptr_atomic.h
Но он к сожалкнию блокирующий, маленькое лукавство — atomic не обязательно подразумевает non blocking.
Сьерра-Невада это горы, совсем другой климат чем в равнинной Калифорнии, там достаточно высоко, прохладно и высокая влажность из-за океанских муссонов, ни разу не пустыня. Там растут в основном хвойные породы — сосна, ель и уникальная секвойя. Вот на восточных склонах, которые к Неваде обращены — там да, песок, камень и кактусы.
Извините конечно, но это бред сивой кобылы в стиле самых укуренных алармистов.
В общем как хотите, а я патентую торговый лэйбл "Без бромоформа", наверняка будет очень популярен.
Satya Nadella?
Ага, точно. Называется "использование внутренней жабы в мирных целях". Процентов нв 40 я тоже на этом вылез, а главное — сейчас очень помогает в моменты искушений.