您的位置:首页 > 其它

利用多线程解决多处理器充分利用的问题

2005-07-20 08:48 411 查看
在B/S架构的应用中经常会遇到某个过程由于业务逻辑复杂而导致执行时间超长而达不到用户要求的情况。虽然说在IIS中会为每个用户建立一个单独的线程去处理,但是对于单个的用户来说仍然是只有一个线程,而且通常情况下开发的程序都是在主线程中运行。即使服务器有多个处理器,而实际上能够利用的大部分情况只有一个处理器。前一段时间我们公司的产品在为一个客户实施的时候就遇到了这样的问题,客户的服务器上面有4个CPU,而实际上真正在使用的只有一个,因为实际并发的用户基本上是一个,但有一些操作仍然要在一分钟以上。
为了解决这个问题,需要在程序运行的过程中建立新的线程,交给操作系统出分配给空闲的处理器(在单线程的情况下操作系统是不能这么做的)。对于大型项目开发来说就需要一个方便使用的线程处理的Class,经过尝试完成了下面的这个线程处理类。

public delegate void MultiWaitCallback(params object[] Params);
public delegate object WithReturnMultiWaitCallback(params object[] Params);

public class ThreadManager

public static bool DeleteEntity(PublicCodeItemEntity entity, DbBroker broker)

private static object ProcDeleteEntityWithBroker(params object[] Params)
{
PublicCodeItemEntity entity=Params[0] as PublicCodeItemEntity;
DbBroker broker=Params[1] as DbBroker;
broker.TransactionCommit +=new BrokerTransactionEventHandler(broker_TransactionCommit);
bool res = broker.ExecuteNonQuery(PublicCodeItemDataAccess.GetDeleteEntity(entity)) > 0;
return res;
}
可能在上面的实现方法上还有很多的不足之处,希望大家能够不吝赐教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐