Impala
Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
spinlock.cc
Go to the documentation of this file.
1
// Copyright 2015 Cloudera Inc.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
#include "
util/spinlock.h
"
15
16
namespace
impala {
17
18
void
SpinLock::SlowAcquire
() {
19
while
(
true
) {
20
if
(
try_lock
())
return
;
21
for
(
int
i = 0; i <
NUM_SPIN_CYCLES
; ++i) {
22
AtomicUtil::CpuWait
();
23
}
24
if
(
try_lock
())
return
;
25
sched_yield();
26
}
27
}
28
29
}
impala::SpinLock::SlowAcquire
void SlowAcquire()
Definition:
spinlock.cc:18
spinlock.h
impala::AtomicUtil::CpuWait
static void CpuWait()
Definition:
atomic.h:32
impala::SpinLock::try_lock
bool try_lock()
Tries to acquire the lock.
Definition:
spinlock.h:41
impala::SpinLock::NUM_SPIN_CYCLES
static const int NUM_SPIN_CYCLES
Definition:
spinlock.h:65
be
src
util
spinlock.cc
Generated on Thu May 7 2015 16:10:38 for Impala by
1.8.6