V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
locked-queue.h
1
// Copyright 2015 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_LOCKED_QUEUE_H_
6
#define V8_LOCKED_QUEUE_H_
7
8
#include "src/allocation.h"
9
#include "src/base/platform/platform.h"
10
11
namespace
v8
{
12
namespace
internal {
13
14
// Simple lock-based unbounded size queue (multi producer; multi consumer) based
15
// on "Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue
16
// Algorithms" by M. Scott and M. Michael.
17
// See:
18
// https://www.cs.rochester.edu/research/synchronization/pseudocode/queues.html
19
template
<
typename
Record>
20
class
LockedQueue
final {
21
public
:
22
inline
LockedQueue
();
23
inline
~
LockedQueue
();
24
inline
void
Enqueue(
const
Record& record);
25
inline
bool
Dequeue(Record* record);
26
inline
bool
IsEmpty()
const
;
27
inline
bool
Peek(Record* record)
const
;
28
29
private
:
30
struct
Node
;
31
32
mutable
base::Mutex
head_mutex_;
33
base::Mutex
tail_mutex_;
34
Node
* head_;
35
Node
* tail_;
36
37
DISALLOW_COPY_AND_ASSIGN(
LockedQueue
);
38
};
39
40
}
// namespace internal
41
}
// namespace v8
42
43
#endif // V8_LOCKED_QUEUE_H_
v8::internal::LockedQueue
Definition:
locked-queue.h:20
v8::internal::LockedQueue::Node
Definition:
locked-queue-inl.h:15
v8
Definition:
libplatform.h:13
v8::base::Mutex
Definition:
mutex.h:37
v8
src
locked-queue.h
Generated on Tue Dec 25 2018 14:39:06 by
1.8.14