BTW I should have linked the following in my earlier email:
https://abseil.io/about/design/mutex

-Todd

On Tue, Oct 31, 2017 at 10:21 AM, Todd Lipcon <t...@cloudera.com> wrote:

> Yea, we use our own mutex which is a simple wrapper around pthreads, but
> also adds some instrumentation and debugging.
>
> We have recently been thinking about switching to absl::Mutex from Google.
> It has adaptive spinning, faster wake up for condition waiters, and a nice
> API which avoids missed notify bugs. It also has the same or better
> instrumentation support.
>
> If you are going to switch I'd take a look at that implementation as well.
>
> On Oct 31, 2017 10:12 AM, "Tim Armstrong" <tarmstr...@cloudera.com> wrote:
>
>> The main case where we still use boost::mutex is when it's pair with a
>> condition variable - we don't have any condition variable that integrates
>> with SpinLock.
>>
>> Mutex does provide some stronger fairness guarantees, I think, but afaik
>> we
>> don't rely on that anywhere.
>>
>> On Tue, Oct 31, 2017 at 9:54 AM, Daniel Hecht <dhe...@cloudera.com>
>> wrote:
>>
>> > We have impala::SpinLock, which works with lock_guard, unique_lock, etc.
>> > It's adaptive so it will block after spinning for a little bit, and
>> seems
>> > to work well in most cases. It's built on gutil, which also has some
>> > tracing we could enable. Any reason not to stick with that?
>> >
>> > I haven't looked at Kudu's implementation in a while and am not opposed
>> to
>> > using it if there's a good reason to switch.  But I think maybe we
>> should
>> > first figure out how to better share code with Kudu so that we don't
>> just
>> > continue to fork general purpose utility code (which is what we're
>> > currently doing).
>> >
>> > On Tue, Oct 31, 2017 at 9:47 AM, Zoltan Borok-Nagy <
>> > borokna...@cloudera.com>
>> > wrote:
>> >
>> > > Hi Everyone,
>> > >
>> > > I started to review the usage of synchronization primitives in Impala
>> and
>> > > created this JIRA issue: https://issues.apache.org/
>> > jira/browse/IMPALA-6125
>> > >
>> > > After some chat with Tim, we talked about the possibilities of
>> reducing
>> > the
>> > > dependence of boost. Since now we are using C++11, there are
>> std::thread,
>> > > std::mutex, and std::condition_variable in the standard library.
>> > >
>> > > On the other hand, the standard library likes to use exceptions in
>> case
>> > of
>> > > errors, and AFAIK we don't like exceptions in Impala. Also, we already
>> > have
>> > > utility classes like ConditionVariable in the code base. In the
>> kudu/util
>> > > directory, there is a Mutex class which is more conform to the Impala
>> > code
>> > > conventions than boost and the standard library. It also checks the
>> > > ownership of the mutex in debug mode, which can be useful for
>> detecting
>> > > bugs.
>> > >
>> > > Do you think it would be a good idea to create our own Mutex
>> > implementation
>> > > based on kudu/util/mutex?
>> > >
>> > > BR,
>> > >     Zoltan
>> > >
>> >
>>
>


-- 
Todd Lipcon
Software Engineer, Cloudera

Reply via email to