If we use the AsyncChannel in a multithread shenariou it is possible (during closing of channel) that the close method will go in stall.
This happens becouse AsyncChannel::close() call _queue.wakeUpAll(); when the AsyncChannel::run() is executing _pChannel->log(pNf->message()).
In this case _queue.wakeUpAll() does not wakeup the right queue and the following execution of nf = _queue.waitDequeueNotification(); will stall all the system.
I attach my first solution to this problem.
My email is firstname.lastname@example.org