Hi Fedor, after some async tests, it appears you were right, thank you!! best regards, nico
Le vendredi 21 avril 2017 22:27:09 UTC+2, Fedor Indutny a écrit : > > `uv_async_send` just invokes a function on the loop's thread. You may use > shared queues and mutexes to pass messages between threads, or some other > thread-safe structure. > > On Fri, Apr 21, 2017 at 4:21 PM, nicolas bats <[email protected] > <javascript:>> wrote: > >> Hi, >> thank you for your answer. >> >> so the uv_loop_t is run by a thread (the one created by reader_start()) >> how can I async send the loop the uv_tcp_connect() request? >> >> or should I tell to the reader_start() to create the two clients and in >> the two threads just send_message() to the clients? >> >> thanks, >> nico >> >> Le vendredi 21 avril 2017 22:09:38 UTC+2, Fedor Indutny a écrit : >>> >>> Hello! >>> >>> I might have got it wrong, but it looks like you are trying to share a >>> `uv_loop_t` between two threads. libuv is generally not thread safe, the >>> only thread-safe primitive is `uv_async_send` which may be used to invoke a >>> callback on a loop that runs in some other thread. >>> >>> Hope this helps, >>> Fedor. >>> >>> On Fri, Apr 21, 2017 at 4:01 PM, nicolas bats <[email protected]> wrote: >>> >>>> Hi guys, >>>> I'm discovering libuv and things are going well _on osx_ and things are >>>> going not well _on windows_... >>>> I'm trying to set up a tcp server and example I'm following is from >>>> here : >>>> https://github.com/litesync/libuv_message_framing >>>> >>>> I have two threads that listen on usb inputs and I want them to send a >>>> copy of their buffer to the tcp server. >>>> first, is tcp the good choice for that task? >>>> >>>> at start of the program, I set up a uv_loop for the server like in >>>> https://github.com/litesync/libuv_message_framing/blob/master/test/test.c >>>> so it's a threaded server: >>>> >>>> uv_barrier_init(&(loop_ptr->barrier), 2); >>>> >>>> uv_thread_create(&(loop_ptr->reader_thread), reader_start, >>>> loop_ptr); >>>> >>>> /* wait until the listening socket is ready on the reader >>>> thread */ >>>> >>>> uv_barrier_wait(&(loop_ptr->barrier)); >>>> >>>> >>>> with reader_start() that start an uv loop. >>>> >>>> >>>> right after, the two threads are created and each one is setting up a >>>> socket which attempt to connect to the server: >>>> >>>> struct sockaddr_in dest; >>>> >>>> uv_ip4_addr("127.0.0.1", loop_ptr->serverPort ,&dest); >>>> >>>> uv_connect_t* connect = malloc(sizeof(uv_connect_t)); >>>> >>>> >>>> >>>> uv_msg_t* socket = malloc(sizeof(uv_msg_t)); >>>> >>>> rc = uv_msg_init(loop_ptr->server_loop, socket, UV_TCP); >>>> >>>> >>>> >>>> uv_tcp_connect(connect, (uv_tcp_t*)socket, (const struct >>>> sockaddr*)&dest, >>>> on_connect); >>>> >>>> >>>> and at this early point, it's not clear for me why it works on osx and >>>> why it fails on windows... >>>> >>>> on windows (uv-1.10.2 MSYS2/GCC), it tells that an assertion failed >>>> ((handle))->activecnt > 0... but not always.... >>>> >>>> >>>> so, can you please tell me what I'm doing wrong. >>>> >>>> >>>> many thanks, >>>> >>>> nico >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "libuv" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at https://groups.google.com/group/libuv. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "libuv" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] <javascript:> >> . >> Visit this group at https://groups.google.com/group/libuv. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "libuv" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/libuv. For more options, visit https://groups.google.com/d/optout.
