Сообщение Re[21]: Безопасность Rust от 27.05.2019 19:50
Изменено 27.05.2019 19:55 alex_public
Re[21]: Безопасность Rust
Здравствуйте, ·, Вы писали:
ИД>>>Потому что Rust требует отсутствие гонок данных.
_>>Это на самом деле тоже иллюзия, даже без unsafe. Потому как гонки могут быть и в рамках одного потока (сопрограммы, лёгкие потоки и т.п.), а Rust как я понимаю это даже не пытается отслеживать.
·>Ты не понимаешь термины. Иван говорит об отсутствии _гонок данных_ (data race), а ты говоришь о гонках вообще.
То, что я описал, — это классические гонки данных, так что не надо тут глупости писать. Или тебе конкретный код показать что ли? )))
·>
Детский сад какой-то. Ты вообще понимаешь в чём собственно проблема с параллельным доступом к одной памяти? В чём смысл атомарности и нужна ли она например для int'ов? Как это всё решает например CAS, который доступен в том же C++11 даже без ассемблера и как это соотносится с твоей цитатой о неопределённом поведение? Может всё же стоит понимать как оно внутри работает, а не рассуждать как о чёрном ящике?
Да, и Rust в этом смысле ничем не отличается от C++ и других системных языков.
ИД>>>Потому что Rust требует отсутствие гонок данных.
_>>Это на самом деле тоже иллюзия, даже без unsafe. Потому как гонки могут быть и в рамках одного потока (сопрограммы, лёгкие потоки и т.п.), а Rust как я понимаю это даже не пытается отслеживать.
·>Ты не понимаешь термины. Иван говорит об отсутствии _гонок данных_ (data race), а ты говоришь о гонках вообще.
То, что я описал, — это классические гонки данных, так что не надо тут глупости писать. Или тебе конкретный код показать что ли? )))
·>
·>Так вот. В C++ это undefined behaviour, в rust — ошибка компиляции.·>The memory model defined in the C11 and C++11 standards uses the term "data race" for a race condition caused by potentially concurrent operations on a shared memory location, of which at least one is a write. A C or C++ program containing a data race has undefined behavior.
Детский сад какой-то. Ты вообще понимаешь в чём собственно проблема с параллельным доступом к одной памяти? В чём смысл атомарности и нужна ли она например для int'ов? Как это всё решает например CAS, который доступен в том же C++11 даже без ассемблера и как это соотносится с твоей цитатой о неопределённом поведение? Может всё же стоит понимать как оно внутри работает, а не рассуждать как о чёрном ящике?
Да, и Rust в этом смысле ничем не отличается от C++ и других системных языков.
Re[21]: Безопасность Rust
Здравствуйте, ·, Вы писали:
ИД>>>Потому что Rust требует отсутствие гонок данных.
_>>Это на самом деле тоже иллюзия, даже без unsafe. Потому как гонки могут быть и в рамках одного потока (сопрограммы, лёгкие потоки и т.п.), а Rust как я понимаю это даже не пытается отслеживать.
·>Ты не понимаешь термины. Иван говорит об отсутствии _гонок данных_ (data race), а ты говоришь о гонках вообще.
То, что я описал, — это классические гонки данных, так что не надо тут глупости писать. Или тебе конкретный код показать что ли? )))
·>
Детский сад какой-то. Ты вообще понимаешь в чём собственно проблема с параллельным доступом к одной памяти? В чём смысл атомарности и нужна ли она например для int'ов? Как это всё решает например CAS, который доступен в том же C++11 даже без ассемблера и как это соотносится с твоей цитатой о неопределённом поведение? Может всё же стоит понимать как оно внутри работает, а не рассуждать как о чёрном ящике?
Да, и Rust в этом смысле ничем не отличается от C++ и других системных языков: https://doc.rust-lang.org/nomicon/races.html — там вроде как есть и про Undefined Behavior и про то, что гарантий нет (причём речь не про unsafe).
ИД>>>Потому что Rust требует отсутствие гонок данных.
_>>Это на самом деле тоже иллюзия, даже без unsafe. Потому как гонки могут быть и в рамках одного потока (сопрограммы, лёгкие потоки и т.п.), а Rust как я понимаю это даже не пытается отслеживать.
·>Ты не понимаешь термины. Иван говорит об отсутствии _гонок данных_ (data race), а ты говоришь о гонках вообще.
То, что я описал, — это классические гонки данных, так что не надо тут глупости писать. Или тебе конкретный код показать что ли? )))
·>
·>Так вот. В C++ это undefined behaviour, в rust — ошибка компиляции.·>The memory model defined in the C11 and C++11 standards uses the term "data race" for a race condition caused by potentially concurrent operations on a shared memory location, of which at least one is a write. A C or C++ program containing a data race has undefined behavior.
Детский сад какой-то. Ты вообще понимаешь в чём собственно проблема с параллельным доступом к одной памяти? В чём смысл атомарности и нужна ли она например для int'ов? Как это всё решает например CAS, который доступен в том же C++11 даже без ассемблера и как это соотносится с твоей цитатой о неопределённом поведение? Может всё же стоит понимать как оно внутри работает, а не рассуждать как о чёрном ящике?
Да, и Rust в этом смысле ничем не отличается от C++ и других системных языков: https://doc.rust-lang.org/nomicon/races.html — там вроде как есть и про Undefined Behavior и про то, что гарантий нет (причём речь не про unsafe).