Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
spdlog
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
spdlog
Commits
d409e536
Commit
d409e536
authored
Jul 10, 2018
by
gabime
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert
d5468e50
parent
d5468e50
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
169 additions
and
168 deletions
+169
-168
include/spdlog/details/thread_pool.h
include/spdlog/details/thread_pool.h
+169
-168
No files found.
include/spdlog/details/thread_pool.h
View file @
d409e536
...
@@ -10,26 +10,27 @@
...
@@ -10,26 +10,27 @@
#include <vector>
#include <vector>
namespace
spdlog
{
namespace
spdlog
{
namespace
details
{
namespace
details
{
using
async_logger_ptr
=
std
::
shared_ptr
<
spdlog
::
async_logger
>
;
using
async_logger_ptr
=
std
::
shared_ptr
<
spdlog
::
async_logger
>
;
enum
class
async_msg_type
enum
class
async_msg_type
{
{
log
,
log
,
flush
,
flush
,
terminate
terminate
};
};
// Async msg to move to/from the queue
// Async msg to move to/from the queue
// Movable only. should never be copied
// Movable only. should never be copied
struct
async_msg
struct
async_msg
{
{
async_msg_type
msg_type
;
async_msg_type
msg_type
;
level
::
level_enum
level
;
level
::
level_enum
level
;
log_clock
::
time_point
time
;
log_clock
::
time_point
time
;
size_t
thread_id
;
size_t
thread_id
;
fmt
::
basic_memory_buffer
<
char
,
176
>
raw
;
fmt
::
basic_memory_buffer
<
char
,
176
>
raw
;
size_t
msg_id
;
size_t
msg_id
;
async_logger_ptr
worker_ptr
;
async_logger_ptr
worker_ptr
;
...
@@ -38,32 +39,32 @@ struct async_msg
...
@@ -38,32 +39,32 @@ struct async_msg
// should only be moved in or out of the queue..
// should only be moved in or out of the queue..
async_msg
(
const
async_msg
&
)
=
delete
;
async_msg
(
const
async_msg
&
)
=
delete
;
#if defined(_MSC_VER) && _MSC_VER <= 1800 // support for vs2013 move
async_msg
(
async_msg
&&
other
)
SPDLOG_NOEXCEPT
:
msg_type
(
other
.
msg_type
),
async_msg
(
async_msg
&&
other
)
SPDLOG_NOEXCEPT
:
msg_type
(
other
.
msg_type
),
level
(
other
.
level
),
level
(
other
.
level
),
time
(
other
.
time
),
time
(
other
.
time
),
thread_id
(
other
.
thread_id
),
thread_id
(
other
.
thread_id
),
raw
(
move
(
other
.
raw
)),
msg_id
(
other
.
msg_id
),
msg_id
(
other
.
msg_id
),
worker_ptr
(
std
::
move
(
other
.
worker_ptr
))
worker_ptr
(
std
::
move
(
other
.
worker_ptr
))
{
{
fmt_helper
::
append_buf
(
other
.
raw
,
raw
);
other
.
raw
.
resize
(
0
);
}
}
async_msg
&
operator
=
(
async_msg
&&
other
)
SPDLOG_NOEXCEPT
async_msg
&
operator
=
(
async_msg
&&
other
)
SPDLOG_NOEXCEPT
{
{
if
(
this
==
&
other
)
return
*
this
;
msg_type
=
other
.
msg_type
;
msg_type
=
other
.
msg_type
;
level
=
other
.
level
;
level
=
other
.
level
;
time
=
other
.
time
;
time
=
other
.
time
;
thread_id
=
other
.
thread_id
;
thread_id
=
other
.
thread_id
;
raw
.
resize
(
0
);
raw
=
std
::
move
(
other
.
raw
);
fmt_helper
::
append_buf
(
other
.
raw
,
raw
);
msg_id
=
other
.
msg_id
;
msg_id
=
other
.
msg_id
;
worker_ptr
=
std
::
move
(
other
.
worker_ptr
);
worker_ptr
=
std
::
move
(
other
.
worker_ptr
);
return
*
this
;
return
*
this
;
}
}
#else
async_msg
(
async_msg
&&
other
)
=
default
;
async_msg
&
operator
=
(
async_msg
&&
other
)
=
default
;
#endif
// construct from log_msg with given type
// construct from log_msg with given type
async_msg
(
async_logger_ptr
&&
worker
,
async_msg_type
the_type
,
details
::
log_msg
&&
m
)
async_msg
(
async_logger_ptr
&&
worker
,
async_msg_type
the_type
,
details
::
log_msg
&&
m
)
...
@@ -99,11 +100,11 @@ struct async_msg
...
@@ -99,11 +100,11 @@ struct async_msg
msg
.
color_range_start
=
0
;
msg
.
color_range_start
=
0
;
msg
.
color_range_end
=
0
;
msg
.
color_range_end
=
0
;
}
}
};
};
class
thread_pool
class
thread_pool
{
{
public:
public:
using
item_type
=
async_msg
;
using
item_type
=
async_msg
;
using
q_type
=
details
::
mpmc_blocking_queue
<
item_type
>
;
using
q_type
=
details
::
mpmc_blocking_queue
<
item_type
>
;
using
clock_type
=
std
::
chrono
::
steady_clock
;
using
clock_type
=
std
::
chrono
::
steady_clock
;
...
@@ -153,7 +154,7 @@ public:
...
@@ -153,7 +154,7 @@ public:
post_async_msg_
(
async_msg
(
std
::
move
(
worker_ptr
),
async_msg_type
::
flush
),
overflow_policy
);
post_async_msg_
(
async_msg
(
std
::
move
(
worker_ptr
),
async_msg_type
::
flush
),
overflow_policy
);
}
}
private:
private:
q_type
q_
;
q_type
q_
;
std
::
vector
<
std
::
thread
>
threads_
;
std
::
vector
<
std
::
thread
>
threads_
;
...
@@ -212,7 +213,7 @@ private:
...
@@ -212,7 +213,7 @@ private:
assert
(
false
);
assert
(
false
);
return
true
;
// should not be reached
return
true
;
// should not be reached
}
}
};
};
}
// namespace details
}
// namespace details
}
// namespace spdlog
}
// namespace spdlog
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment