Size: a a a

2021 March 14

MB

Mikail Bagishov in rust_offtopic
Мимо Проходящий
> Блокироваться синхронными мьютексами - довольно странная идея.

ну почему же странная. Мьютексы для блокировки - логично? Вот ими и блокируют. По крайней мере в сишарпе, я больше про него. Альтернатива - сами понимаете наверное что -  акторы сообщения, адок.

асинхронные мьютексы в расте я пока только щупал, на счёт того как они в реальности себя ведут на всех кейсах - не в курсе.
Альтернатива синхронным мьютексам - асинхронные мьютексы.
Они предоставляют то же АПИ, но не локают системный тред.

Синхронные мьютексы в асинхронном коде можно использовать, если MutexGuard не будет храниться между авейтами (потому что теперь мы знаем, что критические секции очень маленькие и быстрые, и поэтому немного подождать не страшно)
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Mikail Bagishov
Альтернатива синхронным мьютексам - асинхронные мьютексы.
Они предоставляют то же АПИ, но не локают системный тред.

Синхронные мьютексы в асинхронном коде можно использовать, если MutexGuard не будет храниться между авейтами (потому что теперь мы знаем, что критические секции очень маленькие и быстрые, и поэтому немного подождать не страшно)
синхронные лучше вообще не юзать, во избежание. Благо асинхронные имеют то же апи за исключением "await"
источник

MB

Mikail Bagishov in rust_offtopic
Αλεχ Zhukovsky
синхронные лучше вообще не юзать, во избежание. Благо асинхронные имеют то же апи за исключением "await"
Ну да, синхронные мьютексы это уже оптимизация.
источник

МП

Мимо Проходящий... in rust_offtopic
Mikail Bagishov
Мьютекс при этом запомнил, что таска хотела его залокать.
Когда мьютекс освободится, он скажет "я свободен", экзекутор поместит таску в очередь на выполнение, потом какой-то из тредов и возьмет и начнет исполнять.
как бы я не говорил что в расте это не работает. Сомневаюсь конечно, но допускаю. В любом случае что по факту получается - куча обвески для асинхронщины, тонны граблей (понять что именно сделать асинхронным, а что нет), очень тугой апи для примитивов синхронизации. Плюс ещё обвеска на borrowing чтобы конпилятор ощасливить (это то с чем я сталкивался). Плюс всё это опенсорцное и доверие к этому не 100%. Ну и зачем?)
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Мимо Проходящий
как бы я не говорил что в расте это не работает. Сомневаюсь конечно, но допускаю. В любом случае что по факту получается - куча обвески для асинхронщины, тонны граблей (понять что именно сделать асинхронным, а что нет), очень тугой апи для примитивов синхронизации. Плюс ещё обвеска на borrowing чтобы конпилятор ощасливить (это то с чем я сталкивался). Плюс всё это опенсорцное и доверие к этому не 100%. Ну и зачем?)
сказано много) А по факту только претензия борровчекера имеет смысл
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
остальное так же как и везде
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
граблей я на го больше собрал, когда задедлочил всек херам потому что сделал форыч по каналу, а надо было фор по числу детей
источник

МП

Мимо Проходящий... in rust_offtopic
Αλεχ Zhukovsky
синхронные лучше вообще не юзать, во избежание. Благо асинхронные имеют то же апи за исключением "await"
а всишарпе/джаве есть асинхронные мьютексы?
источник

KR

Kai Ren in rust_offtopic
Mikail Bagishov
Ну да, синхронные мьютексы это уже оптимизация.
Очень удобно когда poll() напрямую реализуется.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
как раз потому что по привычке из раста думал что канал сам закроется когда последний ребенок в него напишет и дроп остановит форыч
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Мимо Проходящий
а всишарпе/джаве есть асинхронные мьютексы?
есть
источник

MB

Mikail Bagishov in rust_offtopic
Kai Ren
Очень удобно когда poll() напрямую реализуется.
Ну да, но это тоже нечастый кейс.
источник

МП

Мимо Проходящий... in rust_offtopic
Αλεχ Zhukovsky
сказано много) А по факту только претензия борровчекера имеет смысл
ну а как же тот факт, что в го это в язык встроенное, очевидное и не требует обвески?
источник

MB

Mikail Bagishov in rust_offtopic
Мимо Проходящий
ну а как же тот факт, что в го это в язык встроенное, очевидное и не требует обвески?
А контексты надо все равно руками пробрасывать
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Мимо Проходящий
ну а как же тот факт, что в го это в язык встроенное, очевидное и не требует обвески?
по-моему это минорно. Из разряда является ли for кейвордом или есть это функция как в руби
источник

KR

Kai Ren in rust_offtopic
Мимо Проходящий
ну а как же тот факт, что в го это в язык встроенное, очевидное и не требует обвески?
ErrGroup, Context - это не обвес?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
да как-то насрать) Минимальные различия
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Мимо Проходящий
ну а как же тот факт, что в го это в язык встроенное, очевидное и не требует обвески?
источник

МП

Мимо Проходящий... in rust_offtopic
Mikail Bagishov
Альтернатива синхронным мьютексам - асинхронные мьютексы.
Они предоставляют то же АПИ, но не локают системный тред.

Синхронные мьютексы в асинхронном коде можно использовать, если MutexGuard не будет храниться между авейтами (потому что теперь мы знаем, что критические секции очень маленькие и быстрые, и поэтому немного подождать не страшно)
ну ок, допустим мьютексы асинхронные. А как на счёт cpu bound вычислений?
источник

KR

Kai Ren in rust_offtopic
Создавать каналы и блокироваться на них для await'а - это не обвес?
источник