0
如何以並行方式從Erlang調用C庫?Erlang和C庫。並行執行
我有C庫,它支持多線程(內部互斥),我想從真正並行的方式從erlang的數千個線程啓動這個庫。我該怎麼做 ?
我可以通過Erlang C端口驅動程序或通過C節點或NIF來實現嗎?
如何以並行方式從Erlang調用C庫?Erlang和C庫。並行執行
我有C庫,它支持多線程(內部互斥),我想從真正並行的方式從erlang的數千個線程啓動這個庫。我該怎麼做 ?
我可以通過Erlang C端口驅動程序或通過C節點或NIF來實現嗎?
什麼意思是通過調用C庫和什麼樣的庫?它是線程安全的庫嗎?只需在NIF中調用即可。如果沒有,那麼你必須像往常一樣通過互斥或鎖定來限制對共享狀態的訪問。 Erlang沒有任何魔力。 Erlang爲您提供的是以有意義的方式管理它的工具。
我的意思是從我的C庫調用線程安全函數。 NIF在0.1ms內有運行時間限制,這不適合我。 –
@EduardBondarenko:然後你可以使用髒的調度程序或創建自己的線程。但是使用端口應該是首選的方式,除非你有很強的性能要求,並且發送序列化的數據會導致數據丟失。 –
是的,我們不能使用普通端口來提高性能,所以我們考慮使用c端口驅動程序。我們應該使用C庫中的線程嗎?沒有辦法使用Erlang線程?謝謝。 –