You can use the functions above to take advantage of amortization wrt the #StoreLoad memory barrier that needs to be executed before the 'ac_eventcount_algo1_signal_naked(...)' gets called.
One simple example... Build batches of nodes and push pointers to the batches into the queue using 'ac_queue_spsc_push_nosig(...)'. Once your done with that you can do something like this for the final signal, and memory barrier: ____________________________________________________ /* try and build multiple batches of work */
/* push pointers to the batches into a set of queues using 'ac_queue_spsc_push_nosig(...)' */
/* call ac_mb_fence() */
/* finally, signal each queues eventcount using */ ac_eventcount_algo1_signal_naked( ac_queue_spsc_getec(...) ) ____________________________________________________
This makes improvement on AppCore queuing API; what do you think?