[ 
https://issues.apache.org/jira/browse/THRIFT-1361?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

alexandre parenteau updated THRIFT-1361:
----------------------------------------

    Attachment: THRIFT-1361-rev2.patch

Use boost mutex, instead of boost multiprocess (simpler), remove remaining 
pthread for Win32
                
> Optional replacement of pthread by boost::thread
> ------------------------------------------------
>
>                 Key: THRIFT-1361
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1361
>             Project: Thrift
>          Issue Type: Improvement
>          Components: C++ - Library
>    Affects Versions: 0.8
>         Environment: Linux and Windows
>            Reporter: alexandre parenteau
>            Assignee: alexandre parenteau
>            Priority: Minor
>              Labels: patch
>             Fix For: 0.8
>
>         Attachments: THRIFT-1361-configure.ac.patch, THRIFT-1361-rev2.patch, 
> THRIFT-1361.patch
>
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> What it is:
> * an experimental alternative to using pthread in Thrift, by using 
> boost::thread and boost::interprocess instead (--enable-boostthreads)
> * a way for thrift clients already depending on boost::thread to blend better 
> with thrift
> * a solution to the Windows problem of having to link with ASF incompatible 
> license of pthread_win32 (GPL), add more servers and transports to WIN32 
> (pooled, file, pipe...), and allow for a 64bits WIN32. See THRIFT-1031 for 
> details.
> What it is NOT:
> * a replacement for the POSIX thread version of thrift: the POSIX pthread 
> version has more features, and is probably more stable/mature. This feature 
> is turned off by default by configure
> * a mature code: it has been really lightly tested, and is aimed primarily at 
> the WIN32 platform
> New dependencies:
> * if --enable-boostthreads is provided, libthrift.so will link with shared 
> libboost_thread.so (cannot work with libboost_thread.a AFAIK). This forces in 
> effect Thrift to use a version of boost compiled with "./bjam link=shared"
> Bugs/Testing:
> * ./TestServer --server-type=thread-pool: PASS
> * ./TestServer --server-type=threaded: PASS
> * TFileTransportTest::test_destructor: FAILS: could not tell whether this is 
> because I'm using a slow (virtual) machine (as pointed by the test comment)
> * Tested on Ubuntu/Windows, boost 1.44, libevent 2.0.14: however did not 
> change the vc10 project files, because of potential conflict with on going 
> THRIFT-1031
>  * It is now possible to include more servers/transports to Win32, and also 
> remove all pthread_win32 dependencies
> Related JIRA:
> * THRIFT-1031: Windows port
> Side notes:
> * there are minor corrections inside PosixThreadFactory for all platforms 
> ("started" vs "starting"...), so that Win32 port also works with pthread_win32
> * TFileTransport has been enhanced to use the existing Mutex and Monitor 
> abstractions
> * a minor fix in TSocket.cpp prevents verbose error, WIN32 only
> * minor enhancement by using WSAPoll if available, WIN32 only
> * on msvc10 and boost 1.44, there is a problem deep inside 
> boost::interprocess: boost/interprocess/detail/move.hpp needs to be patched:
> {code}
> index 31d108f..42aa227 100644
> --- a/boost/interprocess/detail/move.hpp
> +++ b/boost/interprocess/detail/move.hpp
> @@ -339,7 +339,7 @@ rvalue_reference move (input_reference);
>  #else
>  template <class T> inline
>  typename remove_reference<T>::type&& move(T&& t)
> -{  return t;   }
> +{  return static_cast<typename remove_reference<T>::type &&>(t);   }
>  #endif
> {code}
> Please let me know of any questions, testing help appreciated (./configure 
> --enable-boostthreads). This is an important change for our company, to get a 
> Windows port of Thrift more on par with Linux features.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to