根据主机性能,动态设置所启用的线程数完成操作,节约时间。
/// <summary>
/// 分配资源 并开始线程
/// </summary>
/// <param name="num">线程数</param>
/// <param name="dpm">组装的将要发送的信息</param>
public void StartThread(DetailPostMessage dpm,int num) {
Thread[] detailThread;
List<DetailPostMessage> detailPostMessages = new List<DetailPostMessage>();
//GetDetail 为将要调用的方法
ParameterizedThreadStart startDetail = new ParameterizedThreadStart(GetDetail);
//为线程申请资源,确定线程总数
detailThread = new Thread[num];
//平均每组分配的个数
int ave = dpm.user_list.Count() / num;
//对dpm进行分组 num个线程 num个分组
for (int j = 0; j < num; j++) {
DetailPostMessage dpmn = new DetailPostMessage();
for (int k = j * ave; k < (j + 1) * ave; k++) {
dpmn.user_list.Add(dpm.user_list[k]);
}
//如果是最后一组
if (j == (num - 1)) {
for (int k = j * ave; k < dpm.user_list.Count(); k++) {
dpmn.user_list.Add(dpm.user_list[k]);
}
}
detailPostMessages.Add(dpmn);
}
for (int i = 0; i < num; i++)//开启指定数量的线程数
{
detailThread[i] = new Thread(startDetail);//指定线程起始设置
detailThread[i].Start(detailPostMessages[i]);//逐个开启线程
}
}
public void GetDetail(Object dpmn){
//todo
}