LINUX.ORG.RU

Glasgow Haskell Compiler 6.10.1

 ,


0

0

Вышел долгожданный релиз наиболее распространенного компилятора языка Haskell — Glasgow Haskell Compiler 6.10.1.

В новой версии:

И многое другое!

Страница GHC

>>> Анонс



Проверено: Shaman007 ()
Ответ на: комментарий от Miguel

Я немного отвлекусь и опишу случай (почти из жизни), когда STM имхо не подходит, а нужна именно блокировка.

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

Здесь случай "обе нити запросили один адрес" не подходит именно из-за экономии ресурсов (сайт лимитирует к-во скачанных страниц в час с одного прокси). Если какая-то нить уже залочила адрес для закачки, другая не должна его повторно качать. Конечно, все зависит от вероятности коллизий, но она м.б. достаточно большой, *особенно* если мы качаем не "все что на глаза попадется", а пытаемся полностью скачать сначала одну маленькую часть сайта, потом другую, ... Именно из-за этого, когда маленькая часть сайта заканчивается, вероятность коллизии будет весьма большой.

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

>случай (почти из жизни), когда STM имхо не подходит

А кто сомневался, что они есть?

>а нужна именно блокировка

Вот для этой задачи (imho) блокировка не нужна.

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

> А кто сомневался, что они есть?

А я сомневаюсь, что вообще есть случаи, когда STM подходит. Впрочем, у меня слишком малый практический опыт в этой области, чтобы прямо сказать "STM не нужен".

> Вот для этой задачи (imho) блокировка не нужна.

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

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

Я в этой ветке форума очень неточно выражался.

STM я понимал как "STM в функциональном стиле", т.е. STM без локов и с перезапуском с новыми данными вместо лока. Так что:

1. Мой пример показывает необходимость STM с локами, т.е. STM в процедурном стиле.

2. Хотелось бы увидеть пример STM в функциональном стиле, из жизни или почти из жизни.

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

>Предложи, как эту задачу решать без блокировки отдельных адресов

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

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