想要注冊一個(gè)進(jìn)程,必須先要?jiǎng)?chuàng)建一個(gè)進(jìn)程。
成都創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),溫嶺網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:溫嶺等地區(qū)。溫嶺做網(wǎng)站價(jià)格咨詢:13518219792如何創(chuàng)建一個(gè)進(jìn)程,可以使用spawn、spawn_link,它們雖然都能創(chuàng)建進(jìn)程,但是也有微妙的區(qū)別:
1)當(dāng)前進(jìn)程中創(chuàng)建一個(gè)并行進(jìn)程,當(dāng)被生成的進(jìn)程崩潰時(shí),當(dāng)前進(jìn)程不會察覺
Pid = spawn(Fun).
2)如果當(dāng)前進(jìn)程創(chuàng)建的進(jìn)程非正常的崩潰,當(dāng)前進(jìn)程也會跟著消失
Pid = spawn_link(Fun).
Erlang中管理注冊進(jìn)程的有4個(gè)內(nèi)置函數(shù),register、unregister、whereis、registered,它們的用法如下:
1)register(AnAtom, Pid):將一個(gè)進(jìn)程Pid注冊一個(gè)名為AnAtom的原子,如果原子AnAtom已經(jīng)被另一個(gè)注冊進(jìn)程所使用,那么注冊就會失敗。
2)unregister(AnAtom):移除與AnAtom相對應(yīng)進(jìn)程的所有注冊信息。如果一個(gè)注冊死亡,那么它也會被自動取消注冊。
3)whereis(AnAtom) -> Pid | undefined:判斷AnAtom是否已經(jīng)被其他進(jìn)程注冊。如果成功,則返回進(jìn)程標(biāo)識符Pid。如果AnAtom沒有與之相對應(yīng)的進(jìn)程,那么就返回原子undefined。
4)registered() -> [AnAtom ::atom()]:返回一個(gè)系統(tǒng)中所有已經(jīng)注冊的名稱列表。
此中所說原子不同與java中原子(我記得java中也有原子定義,和線程安全有關(guān)),它是一種識別標(biāo)識。
例子:
-module(chat).
-export([start/0,stop/0]).
start() ->
spawn(fun() ->
register(chat_process,self()),
process_flag(trap_exit,true),
Port = open_port({spawn,"./chat"},[{packet,2}]),
loop(Port)
end).
stop() ->
chat_process ! stop.
loop(Port) ->
receive
{call,Caller,Msg} ->
Port ! {self(),{command,Msg}},
receive
{Port,{data,Data}} ->
Caller ! {chat_process,Data}
end,
loop(Port);
stop ->
Port ! {self(),close},
receive
{Port,closed} ->
exit(normal)
end;
{'EXIT',Port,Reason} ->
exit({port_terminated,Reason})
end.
其中,chat_process、call、data、port_terminated等就是一個(gè)原子.
當(dāng)不需要這個(gè)注冊進(jìn)程時(shí)可以:unregister(chat_process).
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。