[zeromq-dev] problem like ZMQ-267

Martin Sustrik sustrik at fastmq.com
Tue Sep 22 15:44:23 CEST 2009


Pavel,

> I catched problem like ZMQ-267 in recent master branch of 0MQ 1.0. When 
> number of api_thread_t objects with queues/exchanges is equal or less to 
> 32 all goes ok. but above this value i get following assert:
> 
> api_thread.cpp:410: void zmq::api_thread_t::process_command(const 
> zmq::command_t&): Assertion `false' failed.

The lock free mechanisms are based on atomic operations. Atomic 
operations in their turn are limited to the size of the work (32 bits on 
32-bit platform) thus lock-free synchronisation of more than 32/64 
threads cannot be done.

An option is to change the codebase so that when there are more than 
32/64 threads involved, lock-free synchronisation will be replaced by 
standard synchronisation mechanisms.

Martin



More information about the zeromq-dev mailing list