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倍是不错的,但我想要一个更干净的解决方案

C# multi-threading

线程实例与线程逻辑不同。因此,您可以使用相同的方法创建多个线程,而不必将代码复制并粘贴到单独的相同线程中:

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