[ 
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: c-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: c-dev-h...@xerces.apache.org

Reply via email to