Changes imported from Abseil "staging" branch:

- 28631b3dbc582cb88a637cc4c70886e38a4be0cf Refactoring to support production kernel Futex implementa... by Derek Mauro <dmauro@google.com>
  - 411e7bb779c32bbc02b5fa6f516087a02fcb0812 Update comments about leap smearing. by Abseil Team <absl-team@google.com>

GitOrigin-RevId: 28631b3dbc582cb88a637cc4c70886e38a4be0cf
Change-Id: I0506aa2705212cd466460cae60182b0c2c667972
This commit is contained in:
Abseil Team 2017-11-10 06:33:50 -08:00 committed by katzdm
parent 778abb7c27
commit 9e94e488f5
4 changed files with 55 additions and 33 deletions

View file

@ -29,6 +29,7 @@
#endif
#include <atomic>
#include <cstdint>
#include "absl/base/internal/thread_identity.h"
#include "absl/synchronization/internal/kernel_timeout.h"
@ -99,10 +100,10 @@ class Waiter {
private:
#if ABSL_WAITER_MODE == ABSL_WAITER_MODE_FUTEX
// Futexes are defined by specification to be ints.
// Thus std::atomic<int> must be just an int with lockfree methods.
std::atomic<int> futex_;
static_assert(sizeof(int) == sizeof(futex_), "Wrong size for futex");
// Futexes are defined by specification to be 32-bits.
// Thus std::atomic<int32_t> must be just an int32_t with lockfree methods.
std::atomic<int32_t> futex_;
static_assert(sizeof(int32_t) == sizeof(futex_), "Wrong size for futex");
#elif ABSL_WAITER_MODE == ABSL_WAITER_MODE_CONDVAR
pthread_mutex_t mu_;