 悬赏园豆:30
                [待解决问题]
                悬赏园豆:30
                [待解决问题] 
            
                 
        _t = new Thread(ceshi);
 _t.IsBackground = true;
 _t.Start(); 
private void ceshi()
 {
 Stopwatch stw1 = new Stopwatch();
 stw1.Start();
Task[] tasks = new Task[int.Parse(txt_tcount.Text)];
 int cy = int.Parse(txt_caiyang.Text);
 for (int i = 0; i < tasks.Length; i++)
 {
 Task t1 = Task.Factory.StartNew(delegate { ceshi2(cy); });
 tasks[i] = t1;
 }
Task.WaitAll(tasks);//阻塞
stw1.Stop();
 log(" 用时:" + stw1.ElapsedMilliseconds.ToString());
 }
private void ceshi2(int cy)
 {
 List<Product> l = new List<Product>();
 while (_count < cy)
 {
 _count++;
 Product p = new Product();
 p.Name = _count.ToString();
 l.Add(p); 
 } 
 }
class Product
 {
 public string Name { get; set; }
 public string Category { get; set; }
 public int SellPrice { get; set; }
 }
这段程序4核cpu运行,怎么添加线程都是占用 60%以下,如何 提高到 100%利用率。
发现如果不添加数据,只是简单的运算,是可以到100%的,是不是内存速度跟不上,还是什么原因,请各位大神指点一下!
如果只是做测试,long i++这样的最合适了
你那个代码很容易触发gc,越到后面越坑,而gc的时候你线程会暂停,这样导致你cpu使用率上不来。
我也觉得是 垃圾回收若的祸。。。。那如何决解???望大侠提供点思路!
@☆绿茶☆: 没太好办法,你又想马儿跑的快又想马儿不吃草这个不太现实。
只是针对你的代码逻辑而言,你非要这样撸的话有两条路
1.预先分配好list大小,避免后续add操作的扩容
2.不使用托管内存,自己Marshal.AllocHGlobal到非托管内存中,然后自己控制对象的序列化和反序列化(写入非托管内存及读取),最后free一下。