[
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.