Size: a a a

2020 May 04

D

Dima in rust_offtopic
Kai Ren
У меня и у всех моих знакомых, которые сталкивались с этим вопросом, была совершенно простая, логичная и очевидная модель поведения:
1. Rust исключает ошибки многопотока. Wtf? Как такое возможно? Возьму и залочу мьютекс дважды! Как он мне помешает?
2. Идём сразу гуглить/читать как он это делает. Попадаём сразу на доку Rust, где этот момент разжёван и сказано про data race и race condition.
3. Если просветление не наступило на шаге 2, то дополнительно гуглим что за data race такой и в чём различие.

Всё. Это осиливает любой джун за 5 минут.

Почему многоуважаемым "мэтрам" это дело разжёвывают в комментах как детям в детском саду?
В принципе все это так, но как вы допустим напишите hand over hand locking в safe rust?
источник

D

Dima in rust_offtopic
ну или не знаю, seq lock свой без "технического ub", в отличии от crossbeam
источник

B

Bogdan in rust_offtopic
источник

B

Bogdan in rust_offtopic
public static void MemoryBarrierProcessWide() in class Interlocked

Summary
Provides a process-wide memory barrier that ensures that reads and writes from any CPU cannot move across the barrier
источник

B

Bogdan in rust_offtopic
как это процесс вайд?
источник

B

Bogdan in rust_offtopic
This is a wrapper over the FlushProcessWriteBuffer Windows API or sys_membarrier on a Linux kernel:
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
@DogeShibu а можно tldr как работает derive в хаскеле?
Тлдр как внутри устроен? Или как для разработчика им пользоваться?
источник

SP

Stanislav Popov in rust_offtopic
Переслано от Stanislav Popov
я кажется еще в 2012 плакал почему нет фреймворков для серверов или десктопных апок. ну потом меня убедили мол все велосипедится. и что в итоге:

я хочу резидентный сервак который на старте грузит конфиг, вешает грейсфул терминейшен, имеет некий стейт внутри себя. изменения этого стейта пишутся в WAL на случай перезапусков, wal ужимается, атомарно подменяется, т.е. чтото это короче хендлит

потом хочется межпоточную реактивность этого стейта, сингл сорс оф трутх, и прочее прочее

я вот просто пару этих дней это все провелосипедил, наелся говна понял что sled нельзя брать понял что какой то простенький wal всетаки хочется, реактивность которой например я бы мог пропихивать стейт из след в тредлокальный и все это просто вогнало в такую депру
источник

SP

Stanislav Popov in rust_offtopic
понял что у меня впринципе слишком много циклов потоков данных - я хочу хранилище данных которые будут приходить в уи, я хочу экшены из уи, при этом я не хочу в качестве сингл сорс оф тру юзать базу данных, данные из которой я бы кидал в тредлокальный сторадж
источник

SP

Stanislav Popov in rust_offtopic
вот с точки зрения треда у него должны быть инструменты общения с тредом-мамой - вероятно шаред стейт с ним, и его собственный стейт. при этом часть собственного должна скидываться на хардно видимо не вся а в виде ченжей, но наверное можно и всю, но чтобы было атомарно - походу какими то грязными хаками типа создание рядом файлика и мува в старое место
источник

SP

Stanislav Popov in rust_offtopic
и я как то не замечаю вокруг себя культурки писания подобных серверов. тоесть это реально все просто велосипедит кто как может?
источник

SP

Stanislav Popov in rust_offtopic
есть ли у серверочков чтото типо редакса?
источник

KR

Kai Ren in rust_offtopic
Stanislav Popov
есть ли у серверочков чтото типо редакса?
Как правило, серверы принято писать стейтлесс прослойкой между БД/шиной и юзером. Потому что сразу расчитывается выгружать как минимум 3 экземпляра сервера одновременно, а сингл-сорс-оф-трус в таком случае, как правило, выступает эта самая центральная БД/шина. Дружить между собой N мелких стейтов - тот ещё гемор, нежели просто плясать от одного большого. Потому кейс с атомарным WAL для внутреннего стейта одного процесса по типу redux - действительно очень редкий на сервере. Из реальных кейсов применения подобного я помню читал только про Netflix (если не ошибаюсь), которые максимально (если не полностью) перенесли стейт на инстансы приложений из центрального хранилища, и выиграли от этого. И, кажись, там у них бизнес-логика на это дело ложилась хорошо как раз.
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Тлдр как внутри устроен? Или как для разработчика им пользоваться?
Как внутри устроен. Вот макросы понятно как работают: просто генерят нужный код. А как можно без макросов провернуть дерайв?
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
Как внутри устроен. Вот макросы понятно как работают: просто генерят нужный код. А как можно без макросов провернуть дерайв?
На Generics, как пример
источник

B

Bogdan in rust_offtopic
Kai Ren
Как правило, серверы принято писать стейтлесс прослойкой между БД/шиной и юзером. Потому что сразу расчитывается выгружать как минимум 3 экземпляра сервера одновременно, а сингл-сорс-оф-трус в таком случае, как правило, выступает эта самая центральная БД/шина. Дружить между собой N мелких стейтов - тот ещё гемор, нежели просто плясать от одного большого. Потому кейс с атомарным WAL для внутреннего стейта одного процесса по типу redux - действительно очень редкий на сервере. Из реальных кейсов применения подобного я помню читал только про Netflix (если не ошибаюсь), которые максимально (если не полностью) перенесли стейт на инстансы приложений из центрального хранилища, и выиграли от этого. И, кажись, там у них бизнес-логика на это дело ложилась хорошо как раз.
Он про другие серверы
источник

B

Bogdan in rust_offtopic
Stanislav Popov
Переслано от Stanislav Popov
я кажется еще в 2012 плакал почему нет фреймворков для серверов или десктопных апок. ну потом меня убедили мол все велосипедится. и что в итоге:

я хочу резидентный сервак который на старте грузит конфиг, вешает грейсфул терминейшен, имеет некий стейт внутри себя. изменения этого стейта пишутся в WAL на случай перезапусков, wal ужимается, атомарно подменяется, т.е. чтото это короче хендлит

потом хочется межпоточную реактивность этого стейта, сингл сорс оф трутх, и прочее прочее

я вот просто пару этих дней это все провелосипедил, наелся говна понял что sled нельзя брать понял что какой то простенький wal всетаки хочется, реактивность которой например я бы мог пропихивать стейт из след в тредлокальный и все это просто вогнало в такую депру
Грустная паста.

Сам грустил.
Пришлось спмому коглхозить сохранениеиконфига десктоп апки в файл и потом ренеймы + фсинки.


ЧСХ — всем похуй, обычно просто не парятса и пишут конфижек, если при старте конфижек не валидный то падают
источник

DS

Doge Shibu in rust_offtopic
Stanislav Popov
вот с точки зрения треда у него должны быть инструменты общения с тредом-мамой - вероятно шаред стейт с ним, и его собственный стейт. при этом часть собственного должна скидываться на хардно видимо не вся а в виде ченжей, но наверное можно и всю, но чтобы было атомарно - походу какими то грязными хаками типа создание рядом файлика и мува в старое место
Это называется СУБД
источник

AZ

Alex Zhukovsky in rust_offtopic
Переслано от Alex Zhukovsky
источник

AZ

Alex Zhukovsky in rust_offtopic
Оказывается пустые массивы гайдлайны гошные по сути запрещают (кроме редких случаев), и требут чтобы нулл юзали
источник