首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

变量初始化有关问题

2013-02-19 
变量初始化问题在一个监控程序中,需要对多个监控对象进行初始化,每个对象初始化的时间较长,用循环的话需要

变量初始化问题
在一个监控程序中,需要对多个监控对象进行初始化,每个对象初始化的时间较长,用循环的话需要等很长时间,我想同时对这些被监控的对象进行初始化,应该怎么办?如果用多线程的话应该怎么做,被监控对象的数量很多,有30个左右。求助大家,这种情况下是怎么处理的。 c#?多线程
[解决办法]
将对象初始化的任务放入Task中异步执行。

http://bbs.csdn.net/topics/390323957
[解决办法]
你可以试试这样,或许会有更好的办法
                private void Form1_Load(object sender, EventArgs e)
        {
for(int i;i<30;i++)
{
Thread t = new Thread(new ThreadStart(Start));
                t.IsBackground = true;
t.Name=i.ToString();
                t.Start();
}
}

private void Start()
        {
//判断是哪个线程
               int tid =Convert.ToInt32(Thread.CurrentThread.Name);
变量初始化;
        } 
[解决办法]
多线程未必能解决问题,如果你的每个检控对象共享某些数据,初始化如果不做互斥就会出错,做互斥有时候很麻烦,

如果各个监控对象互不相干,可以完全独立的初始化,可以用多线程,但线程数目应该和你的cpu核心数相同或者少一,
[解决办法]
如果是CPU计算型的,根据CPU核心数量确定线程数,否则根据任务数量确定线程数(30个线程没什么问题)。
试试支持.NET2.0的fastCSharp

            fastCSharp.threading.task task = new fastCSharp.threading.task(fastCSharp.pub.CpuCount);
            task.Add(...);
            ...
            task.Dispose(false);//true表示等待线程结束

热点排行