c# task
Task Parallel Library: 1 of n
http://www.codeproject.com/Articles/152765/Task-Parallel-Library-of-n
Task 與Thread, lambda,? action,funct之間有什么關聯。
Task相比Thread提供了什么方便之處。
Thread
1. 創建費時間,占用內存與CPU的資源
For example, when a new Thread is started in .NET, there is a whole process that goes with that, such as creating queues, thread local storage, managing the Thread's lifecycle etc. This takes time
ThreadPool
1. ThreadPool 免去了創建thread的時間,用戶直接將work item 委托給ThreadPool去安排其內部的線程調用。
2. 但classic threading ThreadPool,當一個work item已經在執行當中,用戶不能去直接關閉,想得到其的結果也是很直接。
However, even using the classic threading ThreadPool, there were problems in that you could not cancel a work item once it has been queued with the ThreadPool, or get a return result that easily. It just doesn't read that well either. There is an excellent article here on CodeProject that tackles some of these issues: Smart ThreadPool, which is pretty excellent actually. However, the new TPL infrastructure has got all these problems covered, and many many more useful features in my opinion.
Task
1. the new TPL infrastructure has got all these problems covered, and many many more useful features in my opinion
Task 繼承了ThreadPool的優點,解決了ThreadPool的問題。其本質也可以講Smart ThreadPool
2. A TPL Task actually uses the ThreadPool internally.
?
Task, ThreadPool, Thread, Scheduler
It is worth mentioning that Tasks are merely wrappers for passing a delegate of work to be done, also storing state, exceptions, and continuations amongst others. That work may or may not be done by the threadpool, and as already stated, that will depend upon the scheduler used.
?
常用的使用場景
Tasks also seem to be more inline with how people think about things. For instance, imagine this scenario: "I want to call a Web Service and have it return a List<int>". Using a TPL Task, I would create a Task<List<int>> and get it to call some service in its payload delegate (which will use the ThreadPool) that returned me a List<int>.
?
Task與UI Thread
reate/cancel Tasks and handle Exceptions
轉載于:https://www.cnblogs.com/pengxinglove/p/5452799.html
總結
- 上一篇: vi 编辑器跳转到指定行数
- 下一篇: C#集合类型——Array、ArrayL