我想命名一个线程,但不幸的是,Mac上的pthread_setname_np()
只能在当前线程内工作。如何在C++ 11中的Mac OS X上命名std :: thread?
然后我周围std::thread
包装用下面的构造函数:
template <class F, class ... Args>
Thread::Thread(const char* name, F&& f, Args&&... args) {
thread_ = std::thread([name, f, args...]() {
pthread_setname_np(name);
f(args...);
});
}
但它不与类方法的工作:
error: called object type '<complex type>' is not a function or function pointer
f(args...);
^
在这样的代码:
threads_.emplace_back("Name", &Aggregator<T>::DoPop, this, some_arg);
什么是合适的方式来包装std::thread
并设置线程名称,保留除构造函数中参数name
之外的整个接口?
什么是要点?你的代码也不起作用。 –
适合我,你编译器是什么? '苹果LLVM版本6.1.0(铛602.0.53)(基于LLVM 3.6.0svn)' – Hamdor
版本是一样的 - 你有没有尝试过一些类的方法? –