[zeromq-dev] CZMQ question re: use of zpoller
Johnny Depp
sdusa at hotmail.com
Tue Apr 21 21:54:44 CEST 2020
Hi Y'alls!
I have a problem that drives me nuts regarding CZMQ use of zpoller. First let me explain the environment: CZMQ version 4.2.1, ZMQ version 5.2.3, Centos 7, GCC version 4.8.5.
I am trying to use a client to push messages to a server. The client and the server at this point are pairs, but in the future, there will be a server and multiple clients.
I have the following C client:
int main() {
zsys_debug("Sending...");
zsock_t *client = zsock_new_push ("@tcp://127.0.0.1:9000");
assert (client);
char *string = NULL;
int i = 0;
for (i = 0; i < 100; i++) {
string = zsys_sprintf ("%02d %s %s %s!", i, "Kilroy", "was", "here");
zstr_send(client, string);
zsys_debug("Sent: %s", string);
free(string);
}
sleep(3);
zsock_destroy (&client);
zsys_debug("Done!'");
return 0;
}
And I have the following C server running on a thread:
void *server(void *args) {
zsock_t *my_server = zsock_new_pull(">tcp://127.0.0.1:9000");
assert (my_server);
// Set up poller
zpoller_t *poller = zpoller_new (my_server, NULL);
assert (poller);
while(!zsys_interrupted) {
zsock_t *which = (zsock_t *) zpoller_wait (poller, -1);
if (which != NULL) {
char *message = zstr_recv (which);
zsys_debug("Message: %s", message);
zstr_free (&message);
} /*else {
zsys_debug("nothing\n");
}*/
}
zpoller_remove(poller, &my_server);
zpoller_destroy (&poller);
zsock_destroy (&my_server);
pthread_exit(NULL);
}
My problem is this: When I use this code in two separate simple applications, the above code works. However, when I move the server into a larger application with multiple threads, it is starting to behave randomly: it works in some cases, but it mostly doesn't. The poller does detect anything on wait.
I am looking at this for over a week now and I cannot understand why. Can somebody please tell me what should I look for? Maybe I should use another approach?
Thank you,
Johnny
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20200421/41317000/attachment.htm>
More information about the zeromq-dev
mailing list