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.

Reply via email to