You have to cast the args to (void *) when calling zmq_threadstart,
and cast the void * argument back to void ** in the child thread.

On Tue, Oct 22, 2013 at 6:29 PM, Laurent Alebarde <l.aleba...@free.fr> wrote:
> Hi Devs,
>
> I am trying to use zmq_threadstart. My first test passing ctx as args works,
> but I need now to pass two arguments. So I tried many ways and all the time
> it ends with a compilor insult :
>
> error: invalid conversion from 'void (*)(void**)' to 'void (*)(void*)'
> [-fpermissive]
> In file included from ../tests/testutil.hpp:24:0,
>                  from ../tests/test_concurrency_parano.cpp:20:
> ../tests/../include/zmq_utils.h:94:18: error:   initializing argument 1 of
> 'void* zmq_threadstart(void (*)(void*), void*)' [-fpermissive]
> make: *** [tests/test_concurrency_parano.o] Error 1
>
> Here is my code exerpt :
>
> struct arg_t {
>     void* ctx;
>     uint8_t id[8];
> };
>
>     for (int i = 0; i < QT_CLIENTS; i++)
>     {
>         arg_t* args = (arg_t*) malloc(sizeof (arg_t)); // it is up to the
> thread to free it
>         args->ctx = ctx;
>
>         int rc = build_test_stuff(i, args->id);
>         assert (rc == 0);
>
>         // start client thread with id
>         threads[i] = zmq_threadstart  (&client_task, args);
>     }
>
> I read many posts on stackoverflow and elsewhere with the same problem with
> pthread_create, but it has not helped me.
>
> Any idea please ?
>
> Laurent
>
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev@lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>



-- 
-
Pieter Hintjens
CEO of iMatix.com
Founder of ZeroMQ community
blog: http://hintjens.com
_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to