Я не зря уточнил, к кому относился мой комментарий, но вы это проигнорировали. Я не отрицаю, что можно заработать себе еду без государства. Для этого надо организовать себе сельское хозяйство и всё к нему сопутствующее. Но вот в способности всё это сделать самостоятельно большинством посетителей данного сайта (geektimes) я сильно сомневаюсь.
только работая на государство или под государством
Деньги, которые вы "зарабатываете", имеют ценость ровно до тех пор, пока государство поддерживает инфраструктуру для их работы. Если вы собираетесь мне опять возразить про деньги догосударственной эпохи, то лучше попробуйте перед этим представить себя там и что вы там будете делать со своим ИТ, не имея доступа к современности.
государство в этом плане выступает наоборот, отбирает половину заработанного
Не так. Не знаю конкретных деталей, но подозреваю, что на практике отбирают себе чиновники (это называют коррупцией). Если же брать теорию о том "как должно быть" то никто вообще ничего не отбирает — просто граждане сообща скидываются на общие нужды своего народа — например на оплату охраны (полиция и армия).
Ну, есть гос. казна, в неё идут налоги, потом тратятся оттуда. Деньги в казне — общие и расходуются на общегосударственные нужды. Собирают их не для того, чтобы что-то забрать у народа, а для того, чтобы сохранить финансовый баланс. Ведь есть простая альтернатива — их можно просто печатать, но тогда будет инфляция и прочие проблемы. Деньги граждан — не общие, но тоже находятся в составе государства. Не путайте государство с гос. аппаратом (чиновниками), последние — лишь малая его часть, выполняющая какие-то функции.
Государство не может брать у вас деньги в обмен ни на что, при всём желании. Если вы его гражданин, то деньги как были в государстве, так и остаются, а услуги вам предоставляют другие его граждане, которым вы за это платите. Количество денег у государства меняется только при международной торговле (по весьма мутным правилам, но не будем об этом т.к. это другая тема).
Вместо советов изучать матчасть лучше укажите, где у меня ошибка. Учтите при этом, что первая часть моего комментария — ответ на заявление предыдущего комментатора о том, что он «сам заработал» себе еду.
Услуги в обмен на налоги предоставляют гос. чиновники (ну всё верно, вы ж их и наняли для этого, в теории). А государство — это народ, который их нанял.
Не сводите всё к бухгалтерии.
Заработаете себе еду без участия государства? Вот нет вокруг никакой глобально-государственой организации, вы (чудом) таки дожили до, условно, 20 лет, и теперь предоставлены полностью себе. Вокруг есть другие такие же люди, они в аналогичной ситуации. Централизованной денежной системы нет (но можете менять продукты своего труда на еду), полиции нет (но можете попытаться договориться с соседями о коллективной атаке на недругов, либо произвести её самостоятельно), о вашем праве собственности на вашу недвижимость (весьма условном) знаете только вы да ближайшие соседи (которые из правил общей морали не пытаются у вас её отжать).
И взгляд с другой стороны. Вот у вас есть родители, которые вас кормили. У ваших родителей есть свои родители, и так далее. Очевидно, большинство этих людей, у которых вы по сути в долгу (без их деятельности вы бы не появились на свет), давно умерло. А ещё у них среди потомков есть не только вы, но и другие люди. А ещё в поддержании этой цепочки жизни могли участвовать и какие-нить знакомые их, и всё это на протяжении сотен и более лет. Коллектиный наследник этого всего — государство.
alexoronvassabi Оба ваших предположения весьма странные. Никто никого сбивать/снимать с орбиты не будет, эти вопросы решаются на юридическом уровне, а не «военными» методами. Спутники и так везде летают чьи угодно, а вот предоставлять связь они будут только там, где это согласовано с государством.
Все остальные варианты развития событий выходят за рамки компетенции коммерческих компаний (и штаты тоже будут сильно не рады, если их компания попытается полезть в международную политику — это монополия государства).
Ваш процитированный код расположен в статье после заявления о том, что виноваты multi-core процессоры, в качестве исправления той проблемы. Так что на момент описания проблемы этот код ещё не используется. Я в своём первом комментарии как раз писал о том, что этот код нужен вне зависимости от того, сколько ядер в проце, потому как без него может случиться (хоть и с меньшей вероятностью) race и на одном ядре с разделением времени между потоками.
Впрочем, сейчас посмотрел внимательнее — появилась ещё одна претензия к статье — ибо даже этот код от race может не спасти. Посмотрите на деструктор ~string ещё раз. Там сначала делается декремент, а потом переменная сравнивается с нулём (и atomic тут не защищает). Между этим декрементом и сравнением теоретически может произойти переключение на другой поток, который сделает ещё один декремент. После чего либо оба потока увидеть use_count==0 с сделают double-delete, либо второй из этих потоков сделает UB обращением к impl->use_count уже освобождённого соседним потоком impl. Возможно, компилятор оптимизирует декремент + сравнение в одну операцию (и тогда скомпилированный код станет хорошим даже без atomic<>), но в любом случае делать он этого не обязан, а в зависимости от деталей реализации класса atomic<> может оказаться что и вообще не имеет права.
Хотя наверно эта проблема обходится через if(!--impl->use_count) — тут явно указано что надо брать именно результат декремента, а не содержимое переменной после него.
Это такая особенность данного явления и в общем-то основа его существования как осмысленной единицы. А те, кто пытаются всех убедить, что страну считать своей не надо, а надо только вести с ней финансовые отношения как с любой третьей стороной — по сути пытаются разрушить основы её существования, потому как злостно дискредитируют единственный смысл её существования.
Поля объекта string побайтно (примерно так) копируются, выделенная в куче память для данных — остаётся на месте (сама строка в общем случае хранится не в объекте string а по указателю из него). Если компилятор умный то он может и копирование полей объекта местами соптимизировать.
А потому, что добавили опцию -fno-strict-aliasing. Она говорит компилятору о том, что два типа данных, абсолютно разных, никак друг с другом не пересекающихся, все равно могут находиться в одной и той же ячейке памяти.
В C для указателей для этого есть restrict — что бы явно указать, что не надо подозревать два указателя пересекающимися (причём это работает и если они одинакового типа). На локальные переменные эти подозрения и так и так не распространяются (если только вы где-то не применили к ним оператор &) а ссылок там нет. Не в курсе касательно C++ но возможно там есть какой-нить restrict для ссылок — было бы очень хорошо, потому как strict-aliasing реально можно много чего испортить.
мы из двух потоков будем пытаться одновременно менять динамический счетчик ссылок use_count.
Многоядерные процы и hyperthreading, которые упоминались в связи с этим, на самом деле тут не особо при чём. Хотя они и увеличивают шансы напороться на race condition по сравнению с одноядерными, но не создают их там, где их не было — многозадачные ОС вполне прозрачно организуют многопоточность (и все её проблемы — тоже) вне зависимости от количества ядер.
Да неужели? Во-первых, не видел никакого массового недовольства, а, во-вторых, вернули очевидно потому, что все нужные перестановки сделали и можно дальше дать народу переизбирать утверждённого ранее мэра.
Я не зря уточнил, к кому относился мой комментарий, но вы это проигнорировали. Я не отрицаю, что можно заработать себе еду без государства. Для этого надо организовать себе сельское хозяйство и всё к нему сопутствующее. Но вот в способности всё это сделать самостоятельно большинством посетителей данного сайта (geektimes) я сильно сомневаюсь.
Деньги, которые вы "зарабатываете", имеют ценость ровно до тех пор, пока государство поддерживает инфраструктуру для их работы. Если вы собираетесь мне опять возразить про деньги догосударственной эпохи, то лучше попробуйте перед этим представить себя там и что вы там будете делать со своим ИТ, не имея доступа к современности.
Не так. Не знаю конкретных деталей, но подозреваю, что на практике отбирают себе чиновники (это называют коррупцией). Если же брать теорию о том "как должно быть" то никто вообще ничего не отбирает — просто граждане сообща скидываются на общие нужды своего народа — например на оплату охраны (полиция и армия).
Не сводите всё к бухгалтерии.
Заработаете себе еду без участия государства? Вот нет вокруг никакой глобально-государственой организации, вы (чудом) таки дожили до, условно, 20 лет, и теперь предоставлены полностью себе. Вокруг есть другие такие же люди, они в аналогичной ситуации. Централизованной денежной системы нет (но можете менять продукты своего труда на еду), полиции нет (но можете попытаться договориться с соседями о коллективной атаке на недругов, либо произвести её самостоятельно), о вашем праве собственности на вашу недвижимость (весьма условном) знаете только вы да ближайшие соседи (которые из правил общей морали не пытаются у вас её отжать).
И взгляд с другой стороны. Вот у вас есть родители, которые вас кормили. У ваших родителей есть свои родители, и так далее. Очевидно, большинство этих людей, у которых вы по сути в долгу (без их деятельности вы бы не появились на свет), давно умерло. А ещё у них среди потомков есть не только вы, но и другие люди. А ещё в поддержании этой цепочки жизни могли участвовать и какие-нить знакомые их, и всё это на протяжении сотен и более лет. Коллектиный наследник этого всего — государство.
Все остальные варианты развития событий выходят за рамки компетенции коммерческих компаний (и штаты тоже будут сильно не рады, если их компания попытается полезть в международную политику — это монополия государства).
Впрочем, сейчас посмотрел внимательнее — появилась ещё одна претензия к статье — ибо даже этот код от race может не спасти. Посмотрите на деструктор ~string ещё раз. Там сначала делается декремент, а потом переменная сравнивается с нулём (и atomic тут не защищает). Между этим декрементом и сравнением теоретически может произойти переключение на другой поток, который сделает ещё один декремент. После чего либо оба потока увидеть use_count==0 с сделают double-delete, либо второй из этих потоков сделает UB обращением к impl->use_count уже освобождённого соседним потоком impl. Возможно, компилятор оптимизирует декремент + сравнение в одну операцию (и тогда скомпилированный код станет хорошим даже без atomic<>), но в любом случае делать он этого не обязан, а в зависимости от деталей реализации класса atomic<> может оказаться что и вообще не имеет права.
Хотя наверно эта проблема обходится через if(!--impl->use_count) — тут явно указано что надо брать именно результат декремента, а не содержимое переменной после него.
Где вы там атомарную инструкцию увидели? Или вы обсуждаете какой-то другой код, не тот что в статье?
В C для указателей для этого есть restrict — что бы явно указать, что не надо подозревать два указателя пересекающимися (причём это работает и если они одинакового типа). На локальные переменные эти подозрения и так и так не распространяются (если только вы где-то не применили к ним оператор &) а ссылок там нет. Не в курсе касательно C++ но возможно там есть какой-нить restrict для ссылок — было бы очень хорошо, потому как strict-aliasing реально можно много чего испортить.
Многоядерные процы и hyperthreading, которые упоминались в связи с этим, на самом деле тут не особо при чём. Хотя они и увеличивают шансы напороться на race condition по сравнению с одноядерными, но не создают их там, где их не было — многозадачные ОС вполне прозрачно организуют многопоточность (и все её проблемы — тоже) вне зависимости от количества ядер.
Не передёргивайте, во-первых это не "доступ в интернет", а во-вторых всякие европы тоже подтягиваются по части блокировок постепенно.
Борьба с незаконной продажей алкоголя (если только не в интернете) и со СПИДом вне компетенции роскомнадзора.
Да неужели? Во-первых, не видел никакого массового недовольства, а, во-вторых, вернули очевидно потому, что все нужные перестановки сделали и можно дальше дать народу переизбирать утверждённого ранее мэра.