2008-11-12 63 views
2

在我的Java程序中,我創建了一個OtpNode和一個「named」OtpMBox。無論何時通過此mbox收到一條消息,都需要執行一些耗時的操作,然後回覆一條回覆消息。由於此操作非常耗時,發送到mbox的後續消息將不會立即處理。Erlang JInterface - 是OtpMBox線程安全的嗎?

所以我想使用Java線程 - 每個消息收到一個。我的問題是我是否也應該爲接收到的每條消息創建一個新的OtpMBox,或者是否可以在所有線程之間共享原始的OtpMBox?

回答

0

我對這些東西並不十分熟悉,但我想你可能會做一些計算) 對於每個java-thread和控制系統(用java編寫)來說,你會有開銷來運行OtpMBox,做一些工作並從中得到結果。我相信java不是它的好工具)

你最好做java線程'主管',將啓動一些(可能是CPU數量)數量'工人'java線程與OtpMBox和發送OtpMBox的pids erlang系統。

- 對不起我的英語

0

這聽起來像你試圖用java做什麼Erlang是擅長。安全的輕量級多處理。是否有一個原因,你需要使用Java進行處理,而不是在erlang中完成呢?或者反過來說,爲什麼你使用erlang,如果java將要做線程呢。我想可能有更多的信息可以回答這個問題。

1

我不確定我是否理解這個問題。您需要每個線程的OtpMBox只是爲了能夠發送答覆,或者這個長時間運行的操作是否必須能夠接收更多消息?

如果是前者,則可以重用原來的mbox。發送操作是同步的。

如果是後者,最好是用Erlang的方法,爲每個線程創建一個mbox,並讓erlang方的調用者知道它是pid,以便它可以將數據發送到該mbox。這是因爲jinterface沒有有效的接收,並且消息將首先被喚醒。