V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
unbound-queue.h
1
// Copyright 2010 the V8 project authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#ifndef V8_PROFILER_UNBOUND_QUEUE_H_
6
#define V8_PROFILER_UNBOUND_QUEUE_H_
7
8
#include "src/allocation.h"
9
#include "src/base/atomicops.h"
10
11
namespace
v8
{
12
namespace
internal {
13
14
15
// Lock-free unbound queue for small records. Intended for
16
// transferring small records between a Single producer and a Single
17
// consumer. Doesn't have restrictions on the number of queued
18
// elements, so producer never blocks. Implemented after Herb
19
// Sutter's article:
20
// http://www.ddj.com/high-performance-computing/210604448
21
template
<
typename
Record>
22
class
UnboundQueue
{
23
public
:
24
inline
UnboundQueue
();
25
inline
~
UnboundQueue
();
26
27
V8_INLINE
bool
Dequeue(Record* rec);
28
V8_INLINE
void
Enqueue(
const
Record& rec);
29
V8_INLINE
bool
IsEmpty()
const
;
30
V8_INLINE Record* Peek()
const
;
31
32
private
:
33
V8_INLINE
void
DeleteFirst();
34
35
struct
Node
;
36
37
Node
* first_;
38
base::AtomicWord divider_;
// Node*
39
base::AtomicWord last_;
// Node*
40
41
DISALLOW_COPY_AND_ASSIGN(
UnboundQueue
);
42
};
43
44
45
}
// namespace internal
46
}
// namespace v8
47
48
#endif // V8_PROFILER_UNBOUND_QUEUE_H_
v8
Definition:
libplatform.h:13
v8::internal::UnboundQueue::Node
Definition:
unbound-queue-inl.h:14
v8::internal::UnboundQueue
Definition:
unbound-queue.h:22
v8
src
profiler
unbound-queue.h
Generated on Tue Dec 25 2018 14:39:42 by
1.8.14