170 похожих чатов

Ребят, вам бы хватило возможности шарить память между 127 потоками?

Просто решил ограничить типизированным массивом, но лично на практике никогда не требовалось шарить даже между двумя.

17 ответов

27 просмотров

Не понял какая связь между вопросом и вторым предложением, а так же откуда ограничение в 127 Если что, возможности шарить память мне бы не хватило, ещё нужны семафоры и/или мьютексы

Артем- Автор вопроса
Алексей Попов
Не понял какая связь между вопросом и вторым предл...

Да, ограничение вокруг мьютекса и крутится. Т.е. максимальное количество обращений из разных потоков будет числом, которое помещается в без знаковое 8-битное число, т.е. 127, где 0 — лок потока.

Артем- Автор вопроса
Алексей Попов
А почему 8-ми битное?

Решил самое маленькое из доступного взять, чтоб сократить время (и издержки) от создания мьютекса. Но подумал, хватит ли его. (вроде с запасом, но я может не встречал такие требования)

Артем
Решил самое маленькое из доступного взять, чтоб со...

Ты же понимаешь что на уровне процессора всё равно идёт манипуляция числом в 64 разряда (ну или какая у тебя там архитектура, вряд ли условный z80)?

Артем- Автор вопроса
Алексей Попов
Ты же понимаешь что на уровне процессора всё равно...

Мы меняем значение элемента типизированного массива, так что не должно быть

Артем
Мы меняем значение элемента типизированного массив...

И как это выглядит? Ты думаешь в регистры будут загружаться сразу несколько последовательных элементов массива, чтобы произвести операцию над одним из них?

Артем- Автор вопроса
Алексей Попов
И как это выглядит? Ты думаешь в регистры будут за...

Не уверен, просто надеюсь что движок поймет, что я обращаюсь к типизированному массиву, с длиной 1, и меня только одно значение. В теории он может оптимизировать этот кусок, в запись числа с определенной разрядностью, но хз

Мне бы хватило. Тут только пробовать, мне кажется для демагогии нужно смотреть реализацию атомиков в ноде, потому что иначе это просто разговоры.

Артем- Автор вопроса
Сергей Пограничный
Мне бы хватило. Тут только пробовать, мне кажется ...

Надеюсь до вечера альфа-версию своей либы смогу в чат закинуть. Я вчера рассказывал как она работает, по сути просто обертка, которая позволяет чуть удобнее работать с потоками и шарить данные. (Это нужно для двух целей — совместное использование между потоками и передача результата без издержек на копирование.) Сейчас прикручиваю атомики и мьютекс и начну функционал допиливать, а то пока маловато возможностей. (Работать уже можно, но хотелось бы дать больше контроля)

Артем
Надеюсь до вечера альфа-версию своей либы смогу в ...

Да, не помню делал ли кто-то кроме команды Тимура обертки нормальные вокруг атомиков и шаренной памяти - будет хорошо, ждем, тегните пожалуйста.

Что-то типа такого делаешь? https://github.com/metarhia/noroutine

Артем- Автор вопроса
Alexander
Что-то типа такого делаешь? https://github.com/me...

Не, это скорее просто способ запустить что-то в разных потоках, у меня чутка иная концепция. Ты конфигурируешь группы потоков, т.е. говоришь что этот поток называется вот так, имеет, или не имеет расшаренную память, а этот другой поток, с таким то именем и он обладает либо своей памятью, или имеет общую память с другим потоком. Была задача просто, нужно было разнести схожую работу в разные потоки, но не на каждое обращение (там до 15000 может легко дойти, скорее всего больше), а именно по группам (по логике обращения, т.е. какие данные им нужны) и внутри уже кешировать всё и прочее. Начал писать и понял что можно отдельную либу сделать, чтоб не только в этом проекте мертвым грузом лежала, а чтоб кто-то мог взять за основу и сделать что-то хорошее.

Артем- Автор вопроса
Сергей Пограничный
Да, не помню делал ли кто-то кроме команды Тимура ...

В общем накидал вроде, голова уже не варит, на доку не хватило сил, нужно убегать по делам. https://github.com/LimitR/ad-worker Можно протестить и всю критику пулреквестами отправлять)) Ребят, пожалуйста, не цепляйтесь к ошибкам в названиях, или комментариях, это всё мелочи и исправлю. Мне главное понять, чего не хватает по функционалу, чтоб прикрутить. Сегодня вряд ли своей головой допру. (Скорее всего есть проблемы атомиками, проверьте)

Он усложняет код и отладку в разы: лолк/анлок/синхронизация/рейскондишены и тд

Артем- Автор вопроса
Aleksey Kozin
Он усложняет код и отладку в разы: лолк/анлок/синх...

Это только если ты шариш память. Можно не шарить память и проблем не будет. (Просто лови сообщение, или добавляй в шариную память между одним потоком, когда придет уведомление)

Aleksey Kozin
Он усложняет код и отладку в разы: лолк/анлок/синх...

Рейскондишны и без многопоточности есть :-/ Вынесение в отдельный процесс или поток бывает нужно, кейсов много может быть же. Начиная от вычислений, заканчивая отдельными процессами для каких-то бизнес процессов

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта