NVIDIA DeepStream SDK API Reference
6.4 Release
concurrent_queue.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.
3
*
4
* Permission is hereby granted, free of charge, to any person obtaining a
5
* copy of this software and associated documentation files (the "Software"),
6
* to deal in the Software without restriction, including without limitation
7
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
* and/or sell copies of the Software, and to permit persons to whom the
9
* Software is furnished to do so, subject to the following conditions:
10
*
11
* The above copyright notice and this permission notice shall be included in
12
* all copies or substantial portions of the Software.
13
*
14
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
* DEALINGS IN THE SOFTWARE.
21
*/
22
23
#pragma once
24
25
#include <queue>
26
#include <mutex>
27
31
template
<
typename
T>
32
class
ConcurrentQueue
33
{
34
public
:
35
void
push
(
const
T &elm);
36
T
pop
();
37
bool
is_empty
();
38
39
private
:
40
std::queue<T> queue_;
41
std::mutex mutex_;
42
};
43
44
template
<
typename
T>
45
void
ConcurrentQueue<T>::push
(
const
T &elm)
46
{
47
mutex_.lock();
48
queue_.push(elm);
49
mutex_.unlock();
50
}
51
52
template
<
typename
T>
53
T
ConcurrentQueue<T>::pop
()
54
{
55
mutex_.lock();
56
T elm = queue_.front();
57
queue_.pop();
58
mutex_.unlock();
59
return
elm;
60
}
61
62
template
<
typename
T>
63
bool
ConcurrentQueue<T>::is_empty
()
64
{
65
mutex_.lock();
66
bool
res = queue_.empty();
67
mutex_.unlock();
68
return
res;
69
}
ConcurrentQueue
Simple concurrent Queue class using an stl queue.
Definition:
concurrent_queue.h:32
ConcurrentQueue::push
void push(const T &elm)
Definition:
concurrent_queue.h:45
ConcurrentQueue::pop
T pop()
Definition:
concurrent_queue.h:53
ConcurrentQueue::is_empty
bool is_empty()
Definition:
concurrent_queue.h:63
Advance Information | Subject to Change | Generated by NVIDIA | Mon Dec 11 2023 17:51:24 | PR-09318-R32