如何设置线程的名称
2010-05-10 16:15
176 查看
/*
Copyright (C)2003 Barry Dunne (http://www.emule-project.net)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.上海煤气灶维修公司 上海华帝煤气灶维修
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
// Note To Mods //
/*
Please do not change anything here and release it..
There is going to be a new forum created just for the Kademlia side of the client..
If you feel there is an error or a way to improve something, please
post it in the forum first and let us look at it.. If it is a real improvement,
it will be added to the offical client.. Changing something without knowing
what all it does can cause great harm to the network if released in mass form..
Any mod that changes anything within the Kademlia side will not be allowed to advertise
there client on the eMule forum..
*/
#include "stdafx.h"
#include "./ThreadName.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
namespace Kademlia
{
void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName, ...)
{
#ifdef DEBUG
if (dwThreadID == NULL)
return;
__try
{
va_list args;
va_start(args, szThreadName);
int iLenBuf = 0;
char *pcharBuffer = NULL;
int iLenResult;
do
{
iLenBuf += 128;
delete[] pcharBuffer;
pcharBuffer = new char[iLenBuf];
iLenResult = _vsnprintf(pcharBuffer, iLenBuf, szThreadName, args);
}
while (iLenResult == -1);
va_end(args);
THREADNAME_INFO info;
info.dwType = 0x1000;
info.szName = pcharBuffer;
info.dwThreadID = dwThreadID;
info.dwFlags = 0;
__try
{
RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(DWORD), (DWORD *)&info);
} __except (EXCEPTION_CONTINUE_EXECUTION)
{ }
delete[] pcharBuffer;
}
__except (EXCEPTION_CONTINUE_EXECUTION)
{}
#else
UNREFERENCED_PARAMETER(dwThreadID);
UNREFERENCED_PARAMETER(szThreadName);
#endif
}
void SetThreadName(LPCSTR szThreadName, ...)
{
#ifdef DEBUG
__try
{
va_list args;
va_start(args, szThreadName);
int iLenBuf = 0;
char *pcharBuffer = NULL;
int iLenResult;
do
{
iLenBuf += 128;
delete [] pcharBuffer;
pcharBuffer = new char[iLenBuf];
iLenResult = _vsnprintf(pcharBuffer, iLenBuf, szThreadName, args);
}
while (iLenResult == -1);
va_end(args);
THREADNAME_INFO info;
info.dwType = 0x1000;
info.szName = pcharBuffer;
info.dwThreadID = (DWORD)-1;
info.dwFlags = 0;
__try
{
RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(DWORD), (DWORD *)&info);
} __except (EXCEPTION_CONTINUE_EXECUTION)
{ }
delete [] pcharBuffer;
}
__except (EXCEPTION_CONTINUE_EXECUTION)
{}
#else
UNREFERENCED_PARAMETER(szThreadName);
#endif
}
}
Copyright (C)2003 Barry Dunne (http://www.emule-project.net)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.上海煤气灶维修公司 上海华帝煤气灶维修
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
// Note To Mods //
/*
Please do not change anything here and release it..
There is going to be a new forum created just for the Kademlia side of the client..
If you feel there is an error or a way to improve something, please
post it in the forum first and let us look at it.. If it is a real improvement,
it will be added to the offical client.. Changing something without knowing
what all it does can cause great harm to the network if released in mass form..
Any mod that changes anything within the Kademlia side will not be allowed to advertise
there client on the eMule forum..
*/
#include "stdafx.h"
#include "./ThreadName.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
namespace Kademlia
{
void SetThreadName(DWORD dwThreadID, LPCSTR szThreadName, ...)
{
#ifdef DEBUG
if (dwThreadID == NULL)
return;
__try
{
va_list args;
va_start(args, szThreadName);
int iLenBuf = 0;
char *pcharBuffer = NULL;
int iLenResult;
do
{
iLenBuf += 128;
delete[] pcharBuffer;
pcharBuffer = new char[iLenBuf];
iLenResult = _vsnprintf(pcharBuffer, iLenBuf, szThreadName, args);
}
while (iLenResult == -1);
va_end(args);
THREADNAME_INFO info;
info.dwType = 0x1000;
info.szName = pcharBuffer;
info.dwThreadID = dwThreadID;
info.dwFlags = 0;
__try
{
RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(DWORD), (DWORD *)&info);
} __except (EXCEPTION_CONTINUE_EXECUTION)
{ }
delete[] pcharBuffer;
}
__except (EXCEPTION_CONTINUE_EXECUTION)
{}
#else
UNREFERENCED_PARAMETER(dwThreadID);
UNREFERENCED_PARAMETER(szThreadName);
#endif
}
void SetThreadName(LPCSTR szThreadName, ...)
{
#ifdef DEBUG
__try
{
va_list args;
va_start(args, szThreadName);
int iLenBuf = 0;
char *pcharBuffer = NULL;
int iLenResult;
do
{
iLenBuf += 128;
delete [] pcharBuffer;
pcharBuffer = new char[iLenBuf];
iLenResult = _vsnprintf(pcharBuffer, iLenBuf, szThreadName, args);
}
while (iLenResult == -1);
va_end(args);
THREADNAME_INFO info;
info.dwType = 0x1000;
info.szName = pcharBuffer;
info.dwThreadID = (DWORD)-1;
info.dwFlags = 0;
__try
{
RaiseException(MS_VC_EXCEPTION, 0, sizeof(info) / sizeof(DWORD), (DWORD *)&info);
} __except (EXCEPTION_CONTINUE_EXECUTION)
{ }
delete [] pcharBuffer;
}
__except (EXCEPTION_CONTINUE_EXECUTION)
{}
#else
UNREFERENCED_PARAMETER(szThreadName);
#endif
}
}
相关文章推荐
- Linux pthread_create 如何设置 线程的detach 状态
- linux下线程优先级(属性) (当前线程的调度策略(是否允许设置优先级)。允许的最大优先级,最小优先级。如何设定优先级)
- 如何设置Eclipse中的项目使他们访问时不需要输入项目名称可以直接访问
- 如何设置进程(线程)在指定的CPU上运行
- 支付宝如何设置无线授权密钥,appid的回调地址、名称,logo
- 设置vs debug模式下的线程名称
- 编程小问题系列(5) 如何在VS里设置MFC工程的线程模型
- Hacking Windows CE: 如何从线程ID获取线程名称
- JavaSE8基础 Thread.currentThread 设置和获取main方法所在线程的名称
- c#中为什么能创建同名线程,同名线程如何区分呢,比如设置两个同名线程为不同优先级
- 如何在linux/unix中设置线程的优先级
- 如何设置线程名
- FFMpegFrameGrabber如何释放资源结束线程或者设置阻塞时间
- Java文件下载:如何编码文件名称以及如何设置HttpServletResponse
- Hacking Windows CE: 如何从线程ID获取线程名称
- 数据库没有对约束设置名称如何删除约束(oracle)
- 如何在linux/unix中设置线程的优先级
- C++11的线程类,创建的线程,如何设置优先级?
- drupal8学习笔记之 如何设置站点名称
- 如何在linux/unix中设置线程的优先级