微软.NET基类库提供了几种创建和启动线程的方法。基本上,调用方式与提供相同服务的其他方式非常相似:创建一个表示执行流(或多个执行流)的对象,为其分配一个表示要执行的执行流的委托,并根据委托签名,最终可能需要一个对象作为参数。
实际上有两种方法:
1)使用 System.Threading.Thread
类。
Thread curr = new Thread(myfunction); /* In a class, myfunction is a void taking an object */
curr.Start(new Object()); /* Or something else to be downcast */
2)使用 System.Threading.ThreadPool
类。
ThreadPool.QueueUserWorkItem(myfunction, new Object()); /* Same philosophy here */
我是否应该使用1)或2)?有什么特殊原因吗?
- 性能原因?
- 设计模式?
- 最佳实践是什么?
我感觉答案是:“取决于情况”。您能否列举一些情况,在这些情况下一个方法比另一个更好?