大部分答案取决于硬件以及客户端和服务器的特定条件 - 如果服务器位于单核系统上并且无论如何只处理串行请求,那么您将看不到任何好处。但是,如果它是一个四核服务器并且每个服务器插槽都被卸载到一个单独的内核中,那么您将看到好处,因为每个请求都可以并行处理(假设每个服务器连接也不会为服务器上的共享资源做任何事情它确实)。
至于最好的方法,这在一定程度上也取决于你在做什么——如果你有一个场景,每个客户端都得到一个写入某个共享资源的结果,你必须确保你正确处理这个问题,例如,通过创建锁定写入共享资源的代码:
object lock = new object();
lock(lock)
{
// write to the shared resource
}
如果每个客户端都做自己独立的事情而无法访问共享资源,那么您就没有需要保护的共享资源。
您可以简单地创建您的客户端类的一个新实例,并在运行时对它执行一些函数,如果您需要传递一个参数(这里我们将整数 i 作为参数传递给 TestClient 类的 run 函数,例如 client. Run(i) 在单独的线程中针对 4 个单独的客户端类执行):
for (int i = 0; i < 4; i++)
{
TestClient client = new TestClient();
Thread thread = new Thread(new ParameterizedThreadStart(client.Run));
thread.Start(i);
}
如果您的 TestClient.Run(int i) 类方法然后只是建立连接并进行调用,然后对任何响应执行它需要做的事情,那么这应该可以正常工作。
希望这可以帮助。