No problem! On Sun, Apr 23, 2017 at 12:25 AM, nicolas bats <[email protected]> wrote:
> 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]> 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]. >>> 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]. 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.
