LINUX.ORG.RU

взаимные блокировки

 , ,


1

2

Допустим для курения нужны спички и сигареты(2 ресурса). Разные процессы одновременно захотели курить, один хватает спички, другой сигареты. Далее, они взаимно ожидают освобождения другого ресурса. Это дедлок.

Но вот ведь в чем прикол. IRL это не ведет к остановке жизни на земле, эти ситуации очень просто разрешаются. Как правило, просто один процесс на время уступает ресурс другому, а потом, оба последовательно берут спички и сигареты и закуривают. Конечно, может быть и другое разрешение ситуации — мордобой:) Но он тоже не приведет к дедлоку.

Чудо? Да вроде — нет.

Тогда почему эта проблема существует в CS? И почему ее не существует в Модели Акторов?

Я вообще говоря, не знаю, врать не буду. Чтобы утверждать наверняка надо читать и изучать. Но сходу такая версия: не потому ли это происходит, что какому то из процессов в какой-то момент нужно недетерминированно отдать ресурс другому?



Последнее исправление: portquest2016 (всего исправлений: 1)

Ответ на: комментарий от hateyoufeel

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

portquest2016
() автор топика
Ответ на: комментарий от ddos3

Нет, это я тебя наслушался

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

portquest2016
() автор топика
Ответ на: комментарий от portquest2016

Ой, я прямо так рад, что ты меня игнорить не будешь, мне это так важно :)

Но мы уже скатились в оффтоп, так что предлагаю завязывать.

ddos3
()
Ответ на: комментарий от portquest2016

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

Круто, но для твоей модели акторов я даже языков уровня хаскелла не видел. Хотя бы по популярности (вокруг хаскелла достаточно живое сообщество).

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от eao197

Прочитав исходное сообщение темы, я уже всерьез начал сомневаться в полезности популяризации темы акторов среди широких масс с твоей стороны. Вот, попробуй теперь заткни этот фонтан. Еще чуть чуть, и изобретение акторов припишут тебе.

chimera19
()
Ответ на: комментарий от portquest2016

Но даже если и решает, то это явно крайне неэффективное решение, процессы будут толпами простаивать

в реальной системе блокировка - это атомарная запись в переменную, занимает ровно столько времени, сколько нужно, чтобы строка кеша оказалась в эксклюзивном владении ядра CPU, который ее делает, т.е. от нуля (когда данный CPU уже владеет этой переменной) до 100 тактов (если данные вообще не в кеше, хотя в системе с несколькими сокетами CPU, может быть и больше, за счет обращения к другому контроллеру памяти).

Я это к тому, что большую часть времени потоки вообще не будут конкурировать за атомарную переменную, а будут захватывать блокировку с первого раза, работать и никого ждать не будут, потому что никто другой не пытается ее захватить. Толпами простаивать они будут в микробенчмарках, которые все любят писать в стиле «запустим конкурирующих потоков по количеству ядер x2 и пусть они все дерутся за единственную блокировку и пофиг, что реальная система работает в совершенно ином режиме».

chimera19
()
Ответ на: комментарий от DarkEld3r

просто надо писать на расте

И как это поможет?

Скорее всего на расте этого вообще не осилишь и займешься чем-то более полезным.

chimera19
()
Ответ на: комментарий от chimera19

Многое зависит от нагрузки. При большой нагрузке обычно вылазят все косяки, которые есть в программе. И мешающие друг другу блокировки, и экспоненциальная сложность алгоритмов и прочая фигня.

dave ★★★★★
()

Проблема обедающих философов, google it, mu********er!

shkolnick-kun ★★★★★
()
Ответ на: комментарий от eao197

Ну да, с вашей бесполезной поделкой которой вы всех уже достали рекламируя её в каждой дырке, только смеяться и можно.

anonymous
()
Ответ на: комментарий от anonymous

Сделайте полезную, анонимусы будут смеяться с вашей поделки.

eao197 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.