English 中文(简体)
《新开端》在发出呼吁期间是否read?
原标题:Does the StartNew hold a thread for the duration of a call?

我的假设是,“新开端”只是在工作实际进行期间使用从ThreadPool的透镜,并在等待时释放。 例如:

    Task.Factory.Startnew() {
          () => {
                    ..
                    var dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                     ..
                    }
                }
}

所以说得高于 cm。 赤贫者是一种十分缓慢的储存程序,耗时10分钟。 我认为,TPL将释放read子,而不是整整段。 这难道不正确吗? 如果不是说背景工人的read子的话,TPL的很大优势就是说。 我在阅读后开始思考我的假设是正确的。 Stephen Toub s post

最佳回答

No, that s not threads work in .Net. 如果你发出阻挡性呼吁,read子实际上必须加以阻挡,它就只能做任何事情。 TPL没有这样做的“魔法”。 * E/CN.6/2009/1。

基本上,电话ThreadPool.QueueUserWorkItem(Task.Factory.Start New(之间没有多大区别。 但使用杀伤人员地雷具有许多优势,例如:

  1. Support for cancellation.
  2. Support for continuations (task.ContinueWith()).
  3. Support for other schedulers other than the thread pool. The most frequently used one is the synchronization context, useful in GUI applications.
  4. Inlining tasks (if you start waiting on a task that hasn t been started yet, it can start executing on the current thread).
  5. Thread-local queues of tasks, which can improve performance.
  6. Task is a single abstraction of something that will finish in the future, it doesn t have to be a compute-bound background operation. This will become even more important in .Net 4.5.

页: 1 但是,封锁的呼吁仍将是阻挡的。

问题回答

暂无回答




相关问题
Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How do I compare two decimals to 10 decimal places?

I m using decimal type (.net), and I want to see if two numbers are equal. But I only want to be accurate to 10 decimal places. For example take these three numbers. I want them all to be equal. 0....

Exception practices when creating a SynchronizationContext?

I m creating an STA version of the SynchronizationContext for use in Windows Workflow 4.0. I m wondering what to do about exceptions when Post-ing callbacks. The SynchronizationContext can be used ...

Show running instance in single instance application

I am building an application with C#. I managed to turn this into a single instance application by checking if the same process is already running. Process[] pname = Process.GetProcessesByName("...

How to combine DataTrigger and EventTrigger?

NOTE I have asked the related question (with an accepted answer): How to combine DataTrigger and Trigger? I think I need to combine an EventTrigger and a DataTrigger to achieve what I m after: when ...

热门标签