兩個方法都可以用來啟動一個gen_server服務器進程,具體的參數如下:
gen_server:start_link(Module,Args,Option);
gen_server:start_link(ServerName,Module,Args,Option);
第二個方法只比第一個多了個ServerName,在gen_server的源碼中區別如下:
再具體看gen的源碼:
可以看出如果有ServerName參數就會先查找一遍是否有同名的進程存在,有就會產生{error,{already_started,Pid}} 的提示。
所在在開發並發的gen_server程序的時候要注意調用哪個方法。