是否可能,是否有代码示例。关于如何创建单个线程的多个实例。
一个简单的例子就是
Thread foo = new Thread(testThread);
foo.Start(); // but start more than once instance
@Andrew 好吧,当使用Web客户端下载页面时,大约需要0.5秒。当我创建多个执行相同任务的线程时(在不同的函数名下复制和粘贴相同的线程,并使用for循环的全局列表和索引器同时运行它们。使用4个副本线程,它会在大约0.15秒时下载一个页面。
4个线程的速度提高3倍,但我想要一个更干净的解决方案
答案 0 :(得分:3)
线程实例与线程 logic 不同。因此,您可以使用相同的方法创建多个线程,您不必将代码复制并粘贴到单独的相同方法中:
for( int i=0; i<4; i++ )
(new Thread(threadProc)).Start();
这是合法的,可以做你需要的 - 但根据评论,如果你确实需要并行性,那么使用ThreadPool或者使用TPL任务会更明智:
for( int i=0; i<4; i++ )
ThreadPool.QueueUserWorkItem(threadProc);
for( int i=0; i<4; i++ )
(new Task( threadProc )).Start();
这些变化可以节省创建和销毁单个线程的开销,并可以实现更好的整体利用率。
所有这些方法都有变化,您可以将参数传递给函数,例如变量i
或其他信息来划分工作。有关详细信息,请参阅文档,例如http://msdn.microsoft.com/en-us/library/kbf0f1ct.aspx