32 #include "../include/zmq.h" 38 #include "platform.hpp" 40 #if defined ZMQ_HAVE_WINDOWS 50 #if defined ZMQ_HAVE_WINDOWS 51 static unsigned int __stdcall
worker (
void *ctx_)
63 printf (
"error in zmq_socket: %s\n",
zmq_strerror (errno));
69 printf (
"error in zmq_connect: %s\n",
zmq_strerror (errno));
77 printf (
"error in zmq_msg_init_size: %s\n",
zmq_strerror (errno));
80 #if defined ZMQ_MAKE_VALGRIND_HAPPY 86 printf (
"error in zmq_sendmsg: %s\n",
zmq_strerror (errno));
91 printf (
"error in zmq_msg_close: %s\n",
zmq_strerror (errno));
98 printf (
"error in zmq_close: %s\n",
zmq_strerror (errno));
102 #if defined ZMQ_HAVE_WINDOWS 109 int main (
int argc,
char *argv [])
111 #if defined ZMQ_HAVE_WINDOWS 114 pthread_t local_thread;
122 unsigned long elapsed;
123 unsigned long throughput;
127 printf (
"usage: inproc_thr <message-size> <message-count>\n");
132 message_count = atoi (argv [2]);
136 printf (
"error in zmq_init: %s\n",
zmq_strerror (errno));
142 printf (
"error in zmq_socket: %s\n",
zmq_strerror (errno));
146 rc =
zmq_bind (s,
"inproc://thr_test");
148 printf (
"error in zmq_bind: %s\n",
zmq_strerror (errno));
152 #if defined ZMQ_HAVE_WINDOWS 153 local_thread = (HANDLE) _beginthreadex (NULL, 0,
155 if (local_thread == 0) {
156 printf (
"error in _beginthreadex\n");
160 rc = pthread_create (&local_thread, NULL,
worker, ctx);
162 printf (
"error in pthread_create: %s\n",
zmq_strerror (rc));
169 printf (
"error in zmq_msg_init: %s\n",
zmq_strerror (errno));
174 printf (
"message count: %d\n", (
int) message_count);
178 printf (
"error in zmq_recvmsg: %s\n",
zmq_strerror (errno));
182 printf (
"message of incorrect size received\n");
188 for (i = 0; i != message_count - 1; i++) {
191 printf (
"error in zmq_recvmsg: %s\n",
zmq_strerror (errno));
195 printf (
"message of incorrect size received\n");
206 printf (
"error in zmq_msg_close: %s\n",
zmq_strerror (errno));
210 #if defined ZMQ_HAVE_WINDOWS 211 DWORD rc2 = WaitForSingleObject (local_thread, INFINITE);
212 if (rc2 == WAIT_FAILED) {
213 printf (
"error in WaitForSingleObject\n");
216 BOOL rc3 = CloseHandle (local_thread);
218 printf (
"error in CloseHandle\n");
222 rc = pthread_join (local_thread, NULL);
224 printf (
"error in pthread_join: %s\n",
zmq_strerror (rc));
231 printf (
"error in zmq_close: %s\n",
zmq_strerror (errno));
237 printf (
"error in zmq_ctx_term: %s\n",
zmq_strerror (errno));
241 throughput = (
unsigned long)
242 ((
double) message_count / (double) elapsed * 1000000);
243 megabits = (double) (throughput * message_size * 8) / 1000000;
245 printf (
"mean throughput: %d [msg/s]\n", (
int) throughput);
246 printf (
"mean throughput: %.3f [Mb/s]\n", (
double) megabits);
static void * worker(void *ctx_)
ZMQ_EXPORT void * zmq_init(int io_threads)
ZMQ_EXPORT int zmq_recvmsg(void *s, zmq_msg_t *msg, int flags)
ZMQ_EXPORT unsigned long zmq_stopwatch_stop(void *watch_)
ZMQ_EXPORT void * zmq_msg_data(zmq_msg_t *msg)
ZMQ_EXPORT void * zmq_socket(void *, int type)
int main(int argc, char *argv[])
ZMQ_EXPORT int zmq_connect(void *s, const char *addr)
ZMQ_EXPORT int zmq_close(void *s)
ZMQ_EXPORT int zmq_sendmsg(void *s, zmq_msg_t *msg, int flags)
ZMQ_EXPORT const char * zmq_strerror(int errnum)
ZMQ_EXPORT int zmq_bind(void *s, const char *addr)
ZMQ_EXPORT int zmq_ctx_term(void *context)
ZMQ_EXPORT void * zmq_stopwatch_start(void)
ZMQ_EXPORT int zmq_msg_close(zmq_msg_t *msg)
ZMQ_EXPORT int zmq_msg_init_size(zmq_msg_t *msg, size_t size)
ZMQ_EXPORT size_t zmq_msg_size(zmq_msg_t *msg)
ZMQ_EXPORT int zmq_msg_init(zmq_msg_t *msg)
static size_t message_size