Оцените прошедший день
Final Results
14%
+2 (прекрасно)
33%
+1
23%
0 (нейтрально)
16%
-1
14%
-2 (ужасно)
мне приснилось, что я проспал конференцию и всех подвёл... мне давно не было так морально хреново
Оцените прошедший день
Final Results
12%
+2 (прекрасно)
38%
+1
24%
0 (нейтрально)
15%
-1
12%
-2 (ужасно)
Оцените прошедший день
Final Results
19%
+2 (прекрасно)
25%
+1
30%
0 (нейтрально)
13%
-1
14%
-2 (ужасно)
Вафель: так, сегодня день отдыха. Никакой работы, никакого программирования, буду просто лежать и балдеть.
ТоЖе ВаФеЛь: И всё же почему
И вот как мне с такими мыслями отдыхать???
ТоЖе ВаФеЛь: И всё же почему
CoerceUnsized нельзя реализовать для типов с несколькими полями которые упоминают дженерик параметр кторый ансайзится? Почему на этот мой вопрос так и не ответили? Как их вежливо пингануть? Так, ну а если я теоретически сделаю PR который убирает это ограничение, что я напишу в описании...И вот как мне с такими мыслями отдыхать???
"но в нодах тоже есть указатели, которые тоже надо скоерсить и это увеличит их размер, так подажи"
с днём не очевидного UB в коде
Upd: я нашёл проблему. Я кое-где очепятался и написал
Upd: я нашёл проблему. Я кое-где очепятался и написал
Node<T> вместо OpaqueNode<M>... не пишите дети ансейфimage_2021-12-05_00-20-06.png
24.4 KB
Я случайно написал linked list
Я всё никак не могу понять как атомики работают, может кто-то сможет мне объяснить.
Как
Из документации AtomicBool::swap:
> Note that using
Но тогда как
Мой вопрос, может ли подобный код:
Как
swap (aka exchange) синхронизируется с самим собой, при ordering = Acquire?Из документации AtomicBool::swap:
> Note that using
Acquire makes the store part of this operation Relaxed
То есть swap(Acquire) ≈ load(Acquire) + store(Relaxed), верно?Но тогда как
store синхронизуется с load? Я так понимаю Release имеет "happens-before" отношение к Acquire, но Relaxed такого не имеет... Тогда почему два swap(Acquire) не могут вернуть одно и то же предыдущее значение? Я запутался 😞Мой вопрос, может ли подобный код:
let a = AtomicBool::new(false);
let (x, y) = run_in_parallel(
|| a.swap(true, Acquire),
|| a.swap(true, Acquire),
);
При когда либо вернуть (x, y) что-то кроме (false, true) или (true, false)? И почему так?Код в виде ёлочки который печатает ёлочку!
<twitter:m_ou_se>
Честно, я думал подобные извращения с
<twitter:m_ou_se>
Честно, я думал подобные извращения с
Rust менее возможны, чем с условным C, но вот...Twitter
Mara Bos
🦀🎄 This is what the output looks like in a terminal that supports color escape codes:
мне не нравится реальность
Я всё никак не могу понять как атомики работают, может кто-то сможет мне объяснить. Как swap (aka exchange) синхронизируется с самим собой, при ordering = Acquire? Из документации AtomicBool::swap: > Note that using Acquire makes the store part of this operation…
Короче я кажется разобрался (спросил в чатике
1. Атомики всегда атомарны (ВНЕЗАПНО, ПРАВДА???).
2. Ордеринг влияет не на атомик, который читается/пишется, а на остальную память после операции. Т.е. ордеринг нужен только если нужно поддерживать несколько атомиков сразу или если атомик защищает какую-то память.
3. Документация получается несколько запутывающей, но увы.
Так что ответ на мой вопрос: нет,
Более того, в моём конкретном случае, мне хватит даже
tokio/loom, вхих). 1. Атомики всегда атомарны (ВНЕЗАПНО, ПРАВДА???).
swap(true) всегда вернёт false ровно один раз, вне зависимости от ордеринга.2. Ордеринг влияет не на атомик, который читается/пишется, а на остальную память после операции. Т.е. ордеринг нужен только если нужно поддерживать несколько атомиков сразу или если атомик защищает какую-то память.
3. Документация получается несколько запутывающей, но увы.
Так что ответ на мой вопрос: нет,
x = y не может быть. Потому что это, блин, атомарные операции.Более того, в моём конкретном случае, мне хватит даже
Relaxed, т.к. мне не нужно синхронизовывать другую память с другими тредами.Оцените прошедший день
Final Results
19%
+2 (прекрасно)
31%
+1
21%
0 (нейтрально)
10%
-1
19%
-2 (ужасно)
Если вы не пьёте оливковое масло из горла, то даже не пишите мне
Оцените прошедший день
Final Results
20%
+2 (прекрасно)
22%
+1
28%
0 (нейтрально)
12%
-1
18%
-2 (ужасно)
— Why do you always have so much going on in front of you?
— 🎵 Cause every time I think I take 10 damage and every thought I have makes me wanna die 🎵
— 🎵 Cause every time I think I take 10 damage and every thought I have makes me wanna die 🎵
Оцените прошедший день
Final Results
14%
+2 (прекрасно)
25%
+1
28%
0 (нейтрально)
17%
-1
16%
-2 (ужасно)