我有这样的一个子线程执行,我想给他一个名字,到时候方便查看线程ID对应的线程名,这样我就知道这个线程是干什么的了
环境Linux
void MongoDBManager::ClientThread(const string& uri)
{
m_mongodb_writer = mp_create_mongo_proxy();
if (!m_mongodb_writer->mongodb_init(uri.c_str(), MONGO_POOL_SIZE)) {
LOG(ERROR)("create mongo writer thread failed");
return;
}
while (true) {
if (m_stop == true && m_queue.size_approx() == 0) {
break;
}
mongo_task* task;
if (m_queue.size_approx() == 0) {
Sleep(10);
continue;
}
if (m_queue.wait_dequeue_timed(task, std::chrono::milliseconds(1000)) == false)
{
LOG(ERROR)("mongo write queue get task timeout, size(%d) ", m_queue.size_approx());
continue;
}
task->handle(m_mongodb_writer);
delete task;
task = NULL;
Sleep(1);
}
if (m_mongodb_writer == nullptr) { return; }
m_mongodb_writer->mongodb_stop();
mp_delete_mongo_proxy(m_mongodb_writer);
LOG(INFO)("mongodb client release writer");
return;
}
加个头文件:
#ifndef WIN32
#include <sys/prctl.h>
#endif // ! WIN32
然后在你的线程入口处加上
#ifndef WIN32
prctl(PR_SET_NAME, "Mongo Write Thread", NULL, NULL, NULL);
#endif
【相关推荐】
每一个进程都有属于自己的一个名称。他是一个数字,也是在程序过程中我们用于寻找这个进程的一个标识。进程id是由小到大的,不可能重复,就算同一个程序先有一个id,然后进程结束了,这个id被收回,当再次执行这个程序时,他的id号也会重新分配!后面的id 就是紧挨着原先id的!
常见的用于获取进程id的函数有getpid(当前)、getppid(父)、getuid、geteuid、getgid、getegid