创建多个线程以处理多个请求是一个好练习吗?
is it good practice to create multiple threads to handle multiple request?
我有一个客户端服务器应用程序,我的服务器必须处理每个客户端请求。因此,我决定为每个请求创建线程。这样做是个好主意吗?内部线程我将向客户端发送响应,因此我不想关闭线程。
void MyThreadFunction()
{
//Process request and send response to client
//.....
//.....
return;
}
int main()
{
//.....
//.....
while(true)
{
DWORD dwThreadId;
if(!receive(clientid, data)) //API to receive data from client
break;
CreateThread(NULL, 0, MyThreadFunction, NULL, 0, &dwThreadId);
}
return 1;
}
这样做是个好主意吗?
不,这不是一个好主意。
由于Windows Vista and Server 2008,您可以使用(新的)ThreadPool API。
明确为每个传入请求创建一个新线程具有一定的开销,并将降低您的服务器性能。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 加速C++练习2.4
- 预处理器:插入结构名称中的前一个行号
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 一个简单的序列练习
- 是一个未删除的无限,而循环不良练习
- 创建多个线程以处理多个请求是一个好练习吗?
- 初学者练习:设计一个金钱类
- 我正在做减法游戏(NIM)程序在我的一个练习中,它要求我在主循环周围进行另一个循环
- OpenCV-在解决一个练习时卡住了
- 做一个关于兔子群的练习,撞墙了
- 我对c++ Primer (Flow Execution)中的一个练习感到困惑