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 и прочие радости), про которую исходный пост, но не ваш коммент.

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
29 30     

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 7th, 2025 10:36 pm
Powered by Dreamwidth Studios