Re[7]: Java Parallel computing: multicore, Erlang, Scala
От: abch-98-ru Россия  
Дата: 19.11.08 13:22
Оценка:
Здравствуйте, abch-98-ru, Вы писали:

A9R>Здравствуйте, remark, Вы писали:


R>>Дедлок при обмене сообщениями — как 2 пальца. Один поток ждёт ответа от второго, второй — от первого. Естественно схемы дедлоков в реальных приложениях могут быть и сложнее — затрагивать больше потоков.


A9R>А это... ну... а можно примерчик, работающий на erlang-е. Демонстрирующий дедлок, который честно распадается по таймеру. (! и receive ... after видимо)

A9R>А то меня это дискуссия подвигла залезть на erlang.org, но скиллзов на что-то кроме пинг-понга пока не хватает
A9R>Я даже слово волшебное знаю, пожалуйста

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

-module(dl).
-export([start/0, dl/2]).

dl(P1,P2) ->
   receive 
        {P1, A}->
           A ! {P2, self()},
           io:format("got dl with ~p ~p ~n", [P1,P2])
   after 
        5000 ->
           io:format("timeout dl with ~p ~p ~n", [P1,P2])
    end.

start() ->
    spawn (dl, dl, [p1,p2]),
    spawn(dl, dl, [p2,p1]).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.