File tree Expand file tree Collapse file tree 8 files changed +61
-10
lines changed
Expand file tree Collapse file tree 8 files changed +61
-10
lines changed Original file line number Diff line number Diff line change 11set (CMAKE_CXX_STANDARD 17)
22
3+ include (CheckSymbolExists)
4+
35if (CXX_GCC OR CXX_CLANG)
46 add_cxx_compiler_flag(-Wall)
57 add_cxx_compiler_flag(-Wextra)
@@ -27,6 +29,12 @@ if(OS_POSIX)
2729
2830 add_linker_flag(-Wl,--no -undefined)
2931 add_linker_flag(-Wl,--as-needed)
32+
33+ check_symbol_exists(pthread_setname_np "pthread.h" HAVE_PTHREAD_SETNAME_NP)
34+
35+ if (NOT HAVE_PTHREAD_SETNAME_NP)
36+ check_symbol_exists(pthread_set_name_np "pthread.h" HAVE_PTHREAD_SET_NAME_NP)
37+ endif ()
3038endif ()
3139
3240if (OS_WINDOWS)
@@ -51,6 +59,7 @@ find_package(Nljson REQUIRED)
5159find_package (StringEncoders REQUIRED)
5260find_package (ZLIB REQUIRED)
5361
62+ configure_file (config.hpp.in config.hpp)
5463configure_file (project_info.hpp.in project_info.hpp)
5564
5665include_directories (
Original file line number Diff line number Diff line change 1+ #cmakedefine HAVE_PTHREAD_SETNAME_NP
2+ #cmakedefine HAVE_PTHREAD_SET_NAME_NP
Original file line number Diff line number Diff line change @@ -68,7 +68,7 @@ ColumnsQueryPtr PlayerImpl::createColumnsQuery(const std::vector<std::string>& c
6868
6969std::unique_ptr<WorkQueue> PlayerImpl::createWorkQueue ()
7070{
71- return std::make_unique<ThreadWorkQueue>();
71+ return std::make_unique<ThreadWorkQueue>(MSRV_PROJECT_ID " -control " );
7272}
7373
7474void PlayerImpl::connect ()
Original file line number Diff line number Diff line change 1717namespace msrv {
1818
1919ServerHost::ServerHost (Player* player)
20- : player_(player), utilityQueue_(8 )
20+ : player_(player), utilityQueue_(8 , MSRV_PROJECT_ID " -io " )
2121{
2222 playerWorkQueue_ = player_->createWorkQueue ();
2323 player_->onEvents ([this ](PlayerEvents event) { handlePlayerEvents (event); });
Original file line number Diff line number Diff line change 11#include " server_thread.hpp"
22#include " log.hpp"
3+ #include " project_info.hpp"
34
45#include < boost/thread/reverse_lock.hpp>
56
@@ -9,7 +10,10 @@ ServerThread::ServerThread(ServerReadyCallback readyCallback)
910 : command_(Command::NONE),
1011 readyCallback_ (std::move(readyCallback))
1112{
12- thread_ = std::thread ([this ] { run (); });
13+ thread_ = std::thread ([this ] {
14+ setThreadName (MSRV_PROJECT_ID " -server" );
15+ run ();
16+ });
1317}
1418
1519ServerThread::~ServerThread ()
Original file line number Diff line number Diff line change 44
55#include < stdint.h>
66
7+ #if MSRV_OS_POSIX
8+ #include " config.hpp"
9+ #include < pthread.h>
10+ #endif
11+
712#include < stdexcept>
813#include < type_traits>
914#include < vector>
1015#include < string>
1116#include < utility>
1217
13- namespace msrv {
18+ namespace msrv
19+ {
20+
21+ inline void setThreadName (const char * name);
1422
1523template <typename Traits>
1624class Handle
@@ -86,6 +94,17 @@ class Handle
8694
8795#if MSRV_OS_POSIX
8896
97+ void setThreadName (const char * name)
98+ {
99+ #if defined(HAVE_PTHREAD_SETNAME_NP)
100+ (void ) pthread_setname_np (pthread_self (), name);
101+ #elif defined(HAVE_PTHREAD_SET_NAME_NP)
102+ (void ) pthread_set_name_np (pthread_self (), name);
103+ #else
104+ (void )name;
105+ #endif
106+ }
107+
89108struct PosixHandleTraits
90109{
91110 using Type = int ;
@@ -113,6 +132,11 @@ inline ErrorCode lastSystemError() noexcept
113132
114133#if MSRV_OS_WINDOWS
115134
135+ void setThreadName (const char * name)
136+ {
137+ (void )name;
138+ }
139+
116140struct WindowsHandleTraits
117141{
118142 typedef void * Type;
Original file line number Diff line number Diff line change 11#include " work_queue.hpp"
22#include " log.hpp"
3+ #include " system.hpp"
34
45#include < algorithm>
56
67namespace msrv {
78
89WorkQueue::~WorkQueue () = default ;
910
10- ThreadWorkQueue::ThreadWorkQueue ()
11+ ThreadWorkQueue::ThreadWorkQueue (const char * name )
1112{
12- thread_ = std::thread ([this ] { run (); });
13+ thread_ = std::thread ([this , name] {
14+ if (name)
15+ setThreadName (name);
16+
17+ run ();
18+ });
1319}
1420
1521ThreadWorkQueue::~ThreadWorkQueue ()
@@ -56,15 +62,21 @@ void ThreadWorkQueue::run()
5662 }
5763}
5864
59- ThreadPoolWorkQueue::ThreadPoolWorkQueue (size_t workers)
65+ ThreadPoolWorkQueue::ThreadPoolWorkQueue (size_t workers, const char * name )
6066{
6167 assert (workers > 0 );
6268
6369 threads_.reserve (workers);
6470
6571 for (size_t i = 0 ; i < workers; i++)
6672 {
67- threads_.emplace_back ([this ] { run (); });
73+ threads_.emplace_back ([this , name]
74+ {
75+ if (name)
76+ setThreadName (name);
77+
78+ run ();
79+ });
6880 }
6981}
7082
Original file line number Diff line number Diff line change @@ -29,7 +29,7 @@ class WorkQueue
2929class ThreadWorkQueue : public WorkQueue
3030{
3131public:
32- ThreadWorkQueue ();
32+ explicit ThreadWorkQueue (const char * name = nullptr );
3333 ~ThreadWorkQueue ();
3434
3535 void enqueue (WorkCallback callback) override ;
@@ -48,7 +48,7 @@ class ThreadWorkQueue : public WorkQueue
4848class ThreadPoolWorkQueue : public WorkQueue
4949{
5050public:
51- explicit ThreadPoolWorkQueue (size_t workers);
51+ explicit ThreadPoolWorkQueue (size_t workers, const char * name = nullptr );
5252 ~ThreadPoolWorkQueue ();
5353
5454 void enqueue (WorkCallback callback) override ;
You can’t perform that action at this time.
0 commit comments