摘要: Thread[] threads = new Thread[30]; ManualResetEvent[] events = new ManualResetEvent[10]; for (int i = 0; i < threads.Length; i++) { events[i] = new ManualResetEvent(false); threads[i] = new Thread(worker(events[i])); // call events[i].Set() when the task is done. threads[i].Start(); } WaitHandle. 阅读全文
posted @ 2012-05-07 16:11 webglcn 阅读(542) 评论(0) 推荐(0) 编辑
摘要: 在别人的基础上修改成ManualResetEvent, 以取代suspend, resume. public class Boy { private ManualResetEvent ent; public Boy(ManualResetEvent e) { ent = e; } public void SendFlower() { Console.WriteLine("正在送花的途中"); for (int i = 0; i < 10; i++) { Thread.Sleep(200); Console.Write(".."); } Consol 阅读全文
posted @ 2012-05-07 15:17 webglcn 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个执行而已,其实并没有快(反而慢)多个cpu的话就可以在两个cpu中同时执行.单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统给每个线程分配时间片来执行, 每个时间片大概10ms左右, 看起来像是同时跑, 但实际上是每个线程跑一点点就换到其它线程继续跑效率不会有提高的 切换线程反倒会增加开销为什么有时候线程数超过CPU内核数会更快呢?原因是这种程序的单个线程运算量不足以占满CPU一个内核(比如存在大量IO操作,IO比较慢,是程序瓶颈)。 阅读全文
posted @ 2012-05-07 13:38 webglcn 阅读(231) 评论(0) 推荐(0) 编辑