[ 
https://issues.apache.org/jira/browse/QPID-1160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12622883#action_12622883
 ] 

Steve Huston commented on QPID-1160:
------------------------------------

As part of the Windows port I added a QPID_TSS macro to qpid/sys/Thread.h ala:

#ifdef _WIN32
#  define QPID_TSS __declspec(thread)
#elif defined (gcc)
#  define QPID_TSS __thread
#else
#  define QPID_TSS
#endif

It goes against the guideline for not doing platform-specific ifdefs, but does 
solve the problem for these two compilers. Is this acceptable?


> Mutex/Lock avoidance in management agent interface
> --------------------------------------------------
>
>                 Key: QPID-1160
>                 URL: https://issues.apache.org/jira/browse/QPID-1160
>             Project: Qpid
>          Issue Type: Improvement
>          Components: C++ Broker
>    Affects Versions: M3
>            Reporter: Ted Ross
>            Assignee: Ted Ross
>            Priority: Minor
>             Fix For: M3
>
>
> For management purposes, the C++ broker tracks statistics per-queue, 
> exchange, and binding.  These statistics counters are necessarily incremented 
> in the message forwarding fast-path and therefore must have very low 
> performance cost.
> There is an issue with the multi-threaded nature of the C++ broker in that 
> counter increments must be thread-safe or else they will become corrupt in a 
> short time.  The current code base uses mutexes to protect the counters but 
> this defeats the benefit of having multiple worker threads because counter 
> contention causes the threads to stall while waiting for one another.
> This issue has been created to track the fix for this performance problem in 
> the broker.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to