You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Rush Manbert (JIRA)" <ji...@apache.org> on 2009/05/08 01:52:45 UTC

[jira] Commented: (THRIFT-491) Ripping raw pthreads out of TFileTransport and associated test issues

    [ https://issues.apache.org/jira/browse/THRIFT-491?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12707187#action_12707187 ] 

Rush Manbert commented on THRIFT-491:
-------------------------------------

Rather than defining a new Condition class, it turns out to make a lot more sense to just add this public method to Monitor:
  /** Create a new Monitor that has a different condition, but shares the mutex with this one.
   */
  shared_ptr<Monitor> newMonitorSharedMutex() const;

and change the implementation to keep a boost::shared_ptr to the mutex object. This allows three Monitor objects to be used in TFileTransport in place of the three pthread_cond_t objects that it has now.

It looks like I need to define a new class that just does basic threading, either pthreads or boost threads. That will take care of the writer thread.

Comments?


> Ripping raw pthreads out of TFileTransport and associated test issues
> ---------------------------------------------------------------------
>
>                 Key: THRIFT-491
>                 URL: https://issues.apache.org/jira/browse/THRIFT-491
>             Project: Thrift
>          Issue Type: Question
>          Components: Library (C++)
>    Affects Versions: 0.1
>         Environment: Mac OS X 10.5.6
>            Reporter: Rush Manbert
>
> The last piece of replacing the pthread-based threading implementation with a Boost threads implementation is to replace all of the raw ptherad mutex and condition usage in TFileTransport.
> I think the best way to proceed is to define a Condition class, similar to the way there is a Mutex class defined, give it a generic API that satisfies the demands of TFileTransport, then implement it both ways. You would need to construct a Condition object with a Mutex object reference, or probably a weak_ptr<Mutex> so we can know that the condition waits are safe. I'll add a comment with the API I work out.
> However, my main concern is how to test the new code. It looks like I can use stress-test, but iI was hoping that someone who is familiar with the app could give me some pointers or a test procedure that exercises the threading code.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.