новости сообщество форум вики
Erlang по-русски. Форум » Erlang »

Joe Armstrong и newbie: вопрос

(2 posts)

  1. Привет всем,

    Не бейте меня ногами, если мой вопрос туп. Я учу Erlang и продираюсь сквозь Programming Erlang, до?ёл до такой вот задачки (стр 158):

    Write a function start(AnAtom, Fun) to register AnAtom as spawn(Fun). Make sure your program works correctly in the case when two parallel processes simultaneously evaluate start/2. In this case, you must guarantee that one of these processes succeeds and the other fails.

    Боль?е контекста нет, задачка завер?ает главу о spawn, receive, таймерах и пр.

    Я не уверен, что я понимаю задачу. Я мог бы понять, если бы требовалось такое поведение, когда два процесса вызывают start(AnAtom, Fun) и AnAtom один и тот же, тогда да, нужно в одном из вызовов выкинуть исключение, но зачем нужно исключать просто одновременный вызов этой функции?

    Отправлено 2 года(лет) назад #
  2. тут дело такое, как я понимаю.

    нужно вызвать функцию register/2 для того, чтобы зарегистрировать новый порожденный процесс под именем AnAtom

    в случае, когда register вызывается с уже зарегистрированным именем, оно выкидывает исключение


    start(AnAtom, Fun) ->
    erlang:register(AnAtom, spawn(fun() -> Fun() end).

    если вызвать ее с одним и тем же AnAtom, dj второй раз она выкинет исключение

    register:
    http://erlang.org/doc/man/erlang.html#register-2

    регистрация процессов:
    http://erlang.org/doc/getting_started/conc_prog.html#id2263870

    http://erlang.org/doc/reference_manual/processes.html#id2276534

    Отправлено 2 года(лет) назад #

RSS экспорт этой темы

Отправить сообщение

Вы должны войти в систему, чтобы оставлять сообщения.

 
 

так же

Популярные тэги



Currently online

No Members around.

twitter