2016-09-28 64 views
0

如何以并行方式从Erlang调用C库?Erlang和C库。并行执行

我有C库,它支持多线程(内部互斥),我想从真正并行的方式从erlang的数千个线程启动这个库。我该怎么做 ?

我可以通过Erlang C端口驱动程序或通过C节点或NIF来实现吗?

回答

0

什么意思是通过调用C库和什么样的库?它是线程安全的库吗?只需在NIF中调用即可。如果没有,那么你必须像往常一样通过互斥或锁定来限制对共享状态的访问。 Erlang没有任何魔力。 Erlang为您提供的是以有意义的方式管理它的工具。

+0

我的意思是从我的C库调用线程安全函数。 NIF在0.1ms内有运行时间限制,这不适合我。 –

+0

@EduardBondarenko:然后你可以使用脏的调度程序或创建自己的线程。但是使用端口应该是首选的方式,除非你有很强的性能要求,并且发送序列化的数据会导致数据丢失。 –

+0

是的,我们不能使用普通端口来提高性能,所以我们考虑使用c端口驱动程序。我们应该使用C库中的线程吗?没有办法使用Erlang线程?谢谢。 –