You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Jake Farrell (Updated) (JIRA)" <ji...@apache.org> on 2011/11/01 03:20:37 UTC

[jira] [Updated] (THRIFT-1361) Optional replacement of pthread by boost::thread

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

Jake Farrell updated THRIFT-1361:
---------------------------------

    Fix Version/s:     (was: 0.8)
                   0.9
    
> 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
>            Priority: Minor
>              Labels: patch
>             Fix For: 0.9
>
>         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