Berkus
И они почти схожи но нюансы есть
да ты шо, а какие нюансы у do while?
Matwey
можно писать do { } while (0); и радовацо
Matwey
а внутри можно делать break
Matwey
и отправляться к концу цикла
Matwey
удобно же
Matwey
ггг
Levan (Leo)
Когда делаешь маленькую прогу то да , смешно.)))
Levan (Leo)
И ктаму же я нюанс сказал в различии while и do while
Surreal
Levan (Leo)
Levan (Leo)
Вы уже предираетесь.)))
Berkus
Вы уже предираетесь.)))
вряд ли, я просто хочу понять в чем разница
Berkus
выше не увидел ничего на эту тему
Levan (Leo)
Разница есть и очень значимая.)
Levan (Leo)
В 1м случае если в while задать конечный цикл то при компиляции , не произайдёт нечего
Levan (Leo)
Так как цикл конечный .
Levan (Leo)
А в do while, он сделает 1 проварот цикла всё равно
Levan (Leo)
Он сделает это не зависимо условия
Vsevolod
мне кажется, в c++ не хватает repeat ... until
Ostap ꑭ
do while, как бэ
Vsevolod
этого мало, нужен еще repeat ... until
Санжар
За 30 лет не появилось, теперь наврятли
Surreal
А в do while, он сделает 1 проварот цикла всё равно
Прям во время компиляции провернет?
Chebyrash
Подскажите чат по С, пожалуйста.
Georgiy
https://t.me/Pure_C
Chebyrash
Спасибо
Chebyrash
Я правильно понимаю, что для С нету нативной реализации List, Linked List и Hash Map?
Berkus
do while, как бэ
в until условие инвертировано
Aidar
Когда джависты употребляют слово нативный как принадлежность к стандартным средствам
Chebyrash
есть, каждая твоя реализация - нативная
Ну так если она моя, то не нативная )
Georgiy
есть реализации, можно использовать
Georgiy
http://troydhanson.github.io/uthash/utlist.html например
Aidar
Ну так если она моя, то не нативная )
Нативная, только не встроенная
Andrey
какую либу нужно слинковать чтобы заработал experimental/filesystem с clang-5 ?
Anton
Ну так если она моя, то не нативная )
Что такое "нативность" для тебя?
Andrey
а именно?
Berkus
Ну так если она моя, то не нативная )
если написана на си - то нативная!
Good
А может я глубоко заблуждаюсь? Ну объясните плиз на примере псевдо кода: void work() { if (obj.getBool()) // hard work else // hard work 2 // hard work 3 for (int i=0;i<100;i++) if (obj.getBool()) // hard work4 }
атомик нужен потому, что теоретически мы можем прочитать мусор (даже пусть с бул - тру и фолс - всего два варианта). И тогда, если другой тред тупо пишет туда фолс при условии что там был фолс, то мы можем прочитать тру из-за интерференции. И это плохо, ибо на данном отрезке тру никогда не было, а мы его прочитали. Атомик решает эту проблему фолс позитивов.
Vsevolod
это на какой архитектуре такая "интерференция"?
Vsevolod
на альфе?
Good
на любой, под интерференцией я подразумевал запись одновременно с чтением
Vsevolod
и какая же интерференция, если писать из одного треда фолс
Good
да, тут надо сказать про реализацию була - иногда он реализуется как бит
Vsevolod
и какой же storage для этого бита?
Vsevolod
это полная лажа
Good
хз, это implementation-defined, но в теории может быть, поэтому атомик бул - минимально необходимое зло для обеспечения корректности
Vsevolod
по стандарту любой тип, не являющийся битовым полем, как минимум CHAR_BIT
Vsevolod
другое дело, что обращение к байтикам на каком-нибудь strict alignment проце, типа арма, - это та еще "радость"
Good
а дальше если профайлер покажет узкое место тут, можно уже и химичить
Vsevolod
ну вот на x86 атомик бул нах не нужен
Good
это уже химия
Vsevolod
тем более, что на x86 даже acquire/release не добавляет lock префикса
Good
О, а спин-локи, оказывается, с сегодняшнего дня не работают! Интерференция!
они работают, только перфоманс деградирует по экспоненте
Vsevolod
хотя для инкремента, конечно же, добавляет
Good
даже не линейно и даже не квадратично
Good
тем более, что на x86 даже acquire/release не добавляет lock префикса
потому что архитектура х86 довольно strong-ordered
Vsevolod
ну, тут сложно спорить atomic contention - это серьезная проблема для всех cache coherency протоколов
Vsevolod
и про x86 все совершенно верно
Good
это вообще другая проблема
Vsevolod
только реальность такова, что кроме x86 под нагрузкой вообще ничего не юзают особо
Vsevolod
разве что POWAH
Good
оо, это не так
Good
aarch64 юзают, например
Good
алибаба, и даже фейсбук жалуется )
Vsevolod
в aarch64 тоже довольно строгий ordering
Vsevolod
он вообще больше похож на amd64, чем на arm32
Vsevolod
а вот в risk v жопа, там от мипсины набрались