Date: 2014-06-10 12:05 am (UTC)
yigal_s: (Default)
From: [personal profile] yigal_s
Возможно, автор данной цитаты имел в виду сказать что-то умное, но сказал он полнейшую чушь, что, учитывая те сферы, в которых он летает и в целом его хардкорно техническую, а не бизнес ориентацию, абсолютно непростительно.

Data-race-free именно что composable, мало того, существует элементарнейший алгоритм как сделать любой код data-race-free - а именно, обернуть каждое чтение и каждую запись в конкретную разделяемую ячейку памяти - мютексом, ну, или как нынче модно, сделать доступ к ней атомарным.

Вообще, я б хотел увидеть того гения, который напишет два объекта, каждый из которых будет data-race-free, а их композиция - не будет. )))
Edited Date: 2014-06-10 12:19 am (UTC)

Date: 2014-06-10 12:36 am (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Это ваше высказывание меня удивляет.

Положим, вам надо в объекте поменять два поля согласованно. Что вы будете оборачивать?
А если два поля меняются независимыми методами объекта?
А если между вызовом первого их этих методов и второго надо вставить некоторое не очень короткое вычисление?

Не то чтобы всё это невозможно было решить — но "элементарным" я бы такое решение не назвал. Решение "в лоб" в третьем случае чревато потерей ещё и перформанса.

Date: 2014-06-10 12:42 am (UTC)
From: [identity profile] badula.livejournal.com
Два поля можно завернуть в один метод с двумя параметрами. Хрен с ним что не изящно, синхронизация остаётся внутри метода. Вставить вычисление можно добавив параметры которые его произведут. Лямбду какую-нибудь. Когда объектов становится больше одного начинается вынос синхронизации из объектов. Что впрочем неизбежно, просто Хаскел это скрывает от, не к столу будет сказано, программиста.
Edited Date: 2014-06-10 12:42 am (UTC)

Date: 2014-06-10 12:43 am (UTC)
yigal_s: (Default)
From: [personal profile] yigal_s
существует понятие "data race", Милевски дал его вполне внятное определение, вполне соответствующее общепринятому, и, судя по прочему его тексту именно это имеет в виду. Это понятие вообще никоим образом не связано с тем, чтобы "поменять два поля согласовано", ибо говорит о доступе к единичным ячейкам памяти.

Та проблема, о которой говорите Вы - это "race condition" общего типа - ровно то, что заботит обычных прикладны программистов, и действительно, являющееся при композиции "thread-safe" объектов, написанных, скажем, с помощью блокировок, крайне серьезной проблемой.

"race condition" и "data race" - разные вещи.
Edited Date: 2014-06-10 12:45 am (UTC)

Date: 2014-06-10 01:01 am (UTC)
From: [identity profile] badula.livejournal.com
В тексте он говорит как раз про race conditions общего вида. Про один очень узекий частный случай иногда говорят как про "data race", но этот разговор может быть интересен дизайнерам железа которым нужно как-то решить кто что запишет и кто что прочитает.

Date: 2014-06-10 01:05 am (UTC)
yigal_s: (Default)
From: [personal profile] yigal_s
я привёл свою интерпретацию его текста, а обсуждать чья интерпретация более правильна мне не очень интересно.

"data race" - это вполне уже сфера интереса программистов, вот скажем спецификации модели памяти С++ этот термин должны использовать, и я предполагаю, что стандарт С++ пишется для программистов.

Date: 2014-06-10 07:19 pm (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
О, так понятно.

Действительно, data race при доступе к тому, что логически описано как атомарное, триваильно решается устройством синхронизации вокруг точки доступа.

А вопрос мой относился именно к композиции (где race conitions, deadlocks и прочие радости), про которую исходный пост, но не ваш коммент.

Date: 2014-06-10 12:37 am (UTC)
From: [identity profile] badula.livejournal.com
Он там внутри статьи приводит прямой как штырь пример с переносом денег между счетами — нет одной "разделяемой ячейки". Практических решений для таких проблем навалом, но все они требуют отделения синхронизации от перемены каждого отдельного объекта.

С оборачиванием есть ещё более стрёмная проблема - на основании как угодно атоммарно прочитанного значения обёрнутого поля нельзя сделать никаких модификаций чего бы то ни было, потому что прочитанное прямо в момент прочтения становится неверным. А обернуть все потенциальные мутации весьма сложно.
Edited Date: 2014-06-10 12:46 am (UTC)

Date: 2014-06-10 12:49 am (UTC)
yigal_s: (Default)
From: [personal profile] yigal_s
перенос денег никакого отношения к data-race не имеет.

"Let me quote the definition of data race: Two or more threads accessing the same piece of memory at the same time, at least one of them writing."

Это определение касается одной ячейки памяти, и только.

Если б Милевский просто написал "data race" и начал говорить после этого про банковские операции, т.е. о "race conditions" общего типа - это бы означало, что он то ли не знает смысла этого термина, то ли ошибся. Сие простительно. Но, увы, он не только привел термин, но и дал его определение. Тут уж приходится предполагать, что он чего-то крепко не понимает.
Edited Date: 2014-06-10 12:56 am (UTC)

Date: 2014-06-10 01:01 am (UTC)
yigal_s: (Default)
From: [personal profile] yigal_s
*С оборачиванием есть ещё более стрёмная проблема

Я предложил решение data races, а не всех race conditions ;-)

Date: 2014-06-10 03:49 am (UTC)
From: [identity profile] zyxman.livejournal.com
В функциональном мире уже есть инструмент для автоматизации оборачивания потенциальных мутаций - реактивное программирование.

Date: 2014-06-10 02:50 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Базирующееся на темпоральной логике, базирующейся на топосной логике - там все научно верно.

Date: 2014-06-11 03:57 am (UTC)
From: [identity profile] stanklimoff.livejournal.com
ой, а расскажи мне про этот момент? ты завтра будешь в симантеке?

Date: 2014-06-11 05:13 am (UTC)

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

June 2025

S M T W T F S
1 2345 6 7
8 9 10 11 121314
15161718 1920 21
222324252627 28
2930     

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 30th, 2025 01:14 pm
Powered by Dreamwidth Studios