C# multi-threading
本文关键字:multi-threading | 更新日期: 2023-09-27 17:58:00
有可能吗?有代码示例吗。关于如何制作单个线程的多个实例。
一个快速的例子就是
Thread foo = new Thread(testThread);
foo.Start(); // but start more than once instance
@安德鲁嗯,当使用网络客户端下载一个页面时,大约需要0.5秒。当我制作多个执行相同任务的线程时(将同一个线程复制并粘贴到不同的函数名下,并使用for循环的全局列表和索引器同时运行它们。使用4个复制线程,大约0.15秒就会下载一个页面。
4个线程的速度快3倍是不错的,但我想要一个更干净的解决方案
线程实例与线程逻辑不同。因此,您可以使用相同的方法创建多个线程,而不必将代码复制并粘贴到单独的相同线程中:
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