-
Notifications
You must be signed in to change notification settings - Fork 634
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Добавляет информацию про Atomics #5359
Conversation
Статья отличная. Однако стоит упомянуть, что в JavaScript отсутствуют встроенные механизмы |
В файле упомянуто, что в JS есть Atomics, благодаря которым можно реализовать эти примитивы. Прирост в производительности в этом случае не гарантирован, речь идет про Atomics-ы, а не про механизмы оптимизации производительности в многопоточном программировании. |
Приветик, чуть попозже набегу почитаю-поправлю. Спасибо большое за статью |
робко пингует @HellSquirrel |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Очень круто! Добавила несколько комментариев.
Извини что долго шла до твоего PR
js/atomics/index.md
Outdated
## Пример | ||
Потребность в использовании атомарных операций возникает при работе с `SharedArrayBuffer`, благодаря которому появляется возможность разделения общей памяти между потоками. При работе с общей памятью есть риск возникновения состояния гонки (race condition) без контроля доступа к общему состоянию. | ||
|
||
При правильном использовании `Atomics` мы можем гарантировать, что изменения записываются и читаются, а операции не прерываются и завершаются до начала следующей. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Тут хочется пруф. Из моих смутных воспоминаний про конкаренси алгоритмы следует что не всех гонок и дедлоков можно избегать. Альтенативно можно использовать более аккуратную формулировку "атомики позволяют избегать дедлоков и гонок"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
готово
js/atomics/index.md
Outdated
} | ||
``` | ||
|
||
Вывод в консоль может выглядеть как в примере ниже, но каждый раз он будет случайным. Это зависит от ресурсов компьютера и текущей нагрузки на него. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не уверена что тут дело в нагрузке, скорее в том как звезды сложатся и в ток как системный планировщик все порулит... или атомики планирует браузерный планировщик?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Голосую за системный (вроде в хроме поток это прям системный поток)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
немного переписал
js/atomics/index.md
Outdated
|
||
### Разрешение состояния гонки | ||
|
||
При разрешении состояния гонки мы можем использовать `Mutex`. `Mutex` обеспечивает механизм критических секций. Критическая секция — это часть кода между вызовами блокировки и разблокировки состояния. Проще говоря, `Mutex` позволяет только одному потоку в единый момент времени владеть общим состоянием. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Давай уточним что это за состояние состояние?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Уточнил, что это SharedArrayBuffer в контексте JS
js/atomics/index.md
Outdated
Если кратко, то: | ||
|
||
- У `Mutex` есть два состояния «заблокирован» и «разблокирован». | ||
- Пока `Mutex` заблокирован, остальные потоки ожидают получения права на блокировку. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Давай уточним что блокирует мьютекс
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Добавил
Превью контента из 7ed8622 опубликовано. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Супер, спасибо!
Описание
Добавлена информация о возможностях Atomics и реализации Mutex с их помощью.
Closes #4798