[
https://issues.apache.org/jira/browse/XERCESC-2140?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Roger Leigh resolved XERCESC-2140.
----------------------------------
Resolution: Fixed
Fix Version/s: 3.2.2
Should have been closed for 3.2.2.
> Add MutexMgr for C++11 mutex implementation
> -------------------------------------------
>
> Key: XERCESC-2140
> URL: https://issues.apache.org/jira/browse/XERCESC-2140
> Project: Xerces-C++
> Issue Type: Improvement
> Components: Utilities
> Affects Versions: 3.2.1
> Reporter: Roger Leigh
> Assignee: Roger Leigh
> Priority: Major
> Fix For: 3.2.2
>
> Attachments: 0001-StdMutexMgr-Add-C-11-mutex-manager.patch
>
>
> Xalan currently supports two mutex managers: POSIX and Windows (and
> NoThreads, which doesn't really count). With the advent of C++11, it's no
> longer necessary to use platform-specific threading facilities, since it's
> built directly into the standard library. The attached patch adds a
> StdMutexMgr which uses a C++11 mutex, and will work on Unix or Windows
> systems with a sufficiently new compiler. thread/mutex were implemented
> years ago, so all recent and not so recent systems should support it. For
> those that don't, it will fall back to the POSIX/Windows managers and behave
> like before.
>
> Options have been added to manually select the desired manager as for other
> options for both cmake and autoconf (standard/posix/windows/nothreads).
> Documented in more detail on the build page.
>
> It's tested on Linux/MacOS X/Windows with a variety of manager combinations,
> and all looks fine so far. Any testing/comments much appreciated. It's a
> compatible addition, so could go into 3.2.2 if that's acceptable, otherwise
> could wait for later.
>
> Looking at all of the manager implementations, one key defect (likely
> intentional design), is that there is zero exception safety. No currently
> held mutex will be released if an exception gets thrown. That could be
> prevented by moving to using C++11 threading entirely, and using
> std::lock_guard, which will automatically release locks on unwind.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]