[erlang-questions] Difference between enif_schedule_dirty_nif and driver_async?

Dmitry Kolesnikov dmkolesnikov@REDACTED
Sun Jun 22 16:41:52 CEST 2014


Hello Max,

Are you mixing C ports and C nodes here?
I do agree that C node requires extra effort to handle message marshalling but C port is pure I/O, each port is executed by dedicated OS process.

http://www.erlang.org/doc/tutorial/c_port.html

Would it make sense to you use it?

- Dmitry

On 21 Jun 2014, at 19:23, Max Lapshin <max.lapshin@REDACTED> wrote:

> No, external port is not an easy thing.
> 
> I've tried to do so, but stopped: too many work is done in C around packing/unpacking logic and commands. It is much easier to write small C code in C and wrapper in erlang: video is decoded to plain binaries, then coded back into binaries.
> 
> Everything is running in a separate node. So transcoder node is a separate unix process with all it's threads. Different streams are transcoded in different processes.
> 
> Steve, thanks for the explanation. I didn't knew how many dirty threads are there.  There is flag: CPU or IO bound nif. How does this flag affects scheduling?
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions




More information about the erlang-questions mailing list