There's good slides on doing it here:
http://kkaefer.github.com/node-cpp-modules/

I don't think you need a "proper" way of creating threads -- the only thing
you can't do is have the thread access the v8 runtime since js is
single-threaded.  You can use uv_queue_work and just have the thread block
when you need to.  I've been using Qt and it seems quite easy.  Qt has it's
own application object that is usually run separately from node.

Although I would agree about libuv not having the best docs...  you'd
essentially read the header file and guess what goes on.


On Fri, Jun 15, 2012 at 6:08 PM, wtfux <[email protected]> wrote:

> Hey guys,
> I'm quite a beginner at C++ but I still try to create a node addon in
> order to use a c++ library in node.
> I got it working partially but I have a few problems and questions:
>
> 1. The library I'm using will stay during the whole life of the node
> process and needs to run in an own thread. Is there a "native" way to
> create threads? I'm using pthreads but I guess there is a better way. I
> looked into libuv and in the last git master there is a function
> `uv_thread_create`. Is this what I'm looking for? I'm currently building
> with latest node.js stable and this function is not yet implemented there.
> I could probably also use `uv_queue_work` to create a worker in Node's
> thread pool but I believe this is not a good idea since the worker will
> never complete and will take a thread from the pool for the whole runtime.
>
> 2. I have trouble using libuv's ref counter in order to keep the main Node
> thread stay alive. Node should stay until the thread from question 1 exists
> and should be able to handle callbacks in the meantime. (I didn't implement
> callbacks yet)
> In order to do this I called `uv_ref (uv_default_loop ());` and Node will
> stay open. However here is my problem:
> When the thread is about to exit I call `uv_unref(uv_default_loop());` but
> Node will not terminate. `uv_loop_refcount(uv_default_loop())` shows 1
> before that call and 0 after. Shouldn't Node terminate when the count is 0?
> Is it because I'm calling from a different thread? Or is this even a
> complete wrong way to keep Node stay open? Without any good documentation
> or tutorial I find libuv hard to understand.
>
> Thanks for your time!
>
>  --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
>

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to