work around broken try_lock_for in gcc
authorNathan Bronson <ngbronson@fb.com>
Sun, 29 Dec 2013 05:35:56 +0000 (21:35 -0800)
committerSara Golemon <sgolemon@fb.com>
Mon, 6 Jan 2014 19:38:57 +0000 (11:38 -0800)
commit29a70da4bfa76c7403cd260f5709ee752b9eeab0
tree21fedc3a38b4e900ccc8046d6f0093f6b8e74632
parent4d6d659d59c3d0a9f92c099ff2b53bee8e95bad7
work around broken try_lock_for in gcc

Summary:
timed_mutex::try_lock_for is broken in gcc 4.8 (see
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54562), so this diff adds
a workaround using try_lock_until.  The internal implementation of
try_lock_for converts to try_lock_until, but it uses the steady_clock
instead of the system_clock as its time base.  In some gcc versions
these are the same clock so it works okay, but not in all.

Test Plan: unit tests

Reviewed By: delong.j@fb.com

FB internal diff: D1108584
folly/Synchronized.h