2011-05-01 274 views
1

我在我的erlang代碼中有gen_server。而當我嘗試運行它後,下面的代碼不起作用。例如:Erlang啓動gen_server被阻止的代碼

....... 
my_server:start_link(). 
io:format("AAAAAAAAAAAAAAAAAAA"), 
..... 

現在io:format/1不起作用。如果我運行gen_server與產卵:

...... 
spawn(fun() -> my_server:start_link() end) 
io:format("AAAAAAAAAAAAAAAAA") 
...... 

現在io:格式工作。爲什麼?

謝謝。

+0

你的'start_link'函數是什麼樣的?服務器是否正常啓動並可以接收請求? – rvirding 2011-05-01 20:31:39

+0

請提供更多相關代碼。 – Arunmu 2011-05-02 05:56:47

+0

我懷疑你的'my_server:start_link/0'永遠不會返回。檢查函數並確保它最終返回一些值。 – 2011-05-02 07:13:18

回答

2

我假設您的my_server模塊中的start_link函數調用gen_server:start_link/3gen_server:start_link/4函數。

gen_server:start_link將依次調用my_server模塊的init功能。我猜你的init函數是一個阻塞調用,這就是你的初始代碼不會返回的原因。