【发布时间】:2010-10-07 23:18:46
【问题描述】:
如何提高以下情况的性能?
我有一个应用程序可以通过网络接受多个连接。该应用程序是用 C# 编写的,并接受 Socket 连接。每五分钟,应用程序需要执行一个函数调用来更新应用程序并将信息报告回套接字。后面是截断的代码
...
{
new Thread(Loop).Start();
}
public Loop()
{
...
while (true)
{
...
string line = user.Read();
...
}
...
}
上面的代码是当一个 Socket 连接到服务器时运行的。 以下代码是每五分钟运行一次。
...
{
new Thread(TryTick).Start();
}
public void TryTick()
{
while(true)
{
Tick();
Thread.Sleep(new TimeSpan(0, 5, 0));
}
}
Tick() 执行一些文件 I/O 操作以及解析非常有限(小于 1MB)的 XML 数据集。但是,这段代码对我的处理器的负担比我想象的要多。一旦出现滴答声,系统似乎抓住了我双核开发机的整个Core,不松手。这似乎是一件相当简单的事情,但也许我正在用简单的方法而不是快速的方法来做。
该系统旨在处理多达 100 个用户、更多数据并且在加载期间的响应时间不到 1 秒,因此性能是一个问题。
【问题讨论】:
-
我很抱歉。我手动改错了代码。
-
"新线程(循环).Start();" -- 如果这就是你真正要做的,那你为什么不使用线程池呢?
标签: c# performance multithreading