相关疑难解决方法(0)

拥有一组一次只运行X的任务

假设我有100个任务需要10秒钟.现在我想一次只运行10个,就像10个中的1个完成另一个任务一样,直到完成所有任务.

现在我总是习惯于ThreadPool.QueueUserWorkItem()这样的任务,但我已经读到这样做是不好的做法,我应该使用任务.

我的问题是我没有找到适合我的方案的好例子,所以你能让我开始研究如何通过Tasks实现这个目标吗?

c# multithreading task

27
推荐指数
5
解决办法
1万
查看次数

为什么比核心更多的线程更快?

我在多线程版本中实现了一个PageRank版本.我在4核Q6600上运行它.当我运行它设置为创建4个线程时,我得到:

real    6.968s
user   26.020s
sys     0.050s
Run Code Online (Sandbox Code Playgroud)

当我运行128个线程时,我得到:

real    0.545s
user    1.330s
sys     0.040s
Run Code Online (Sandbox Code Playgroud)

这对我来说毫无意义.基本算法是sum-reduce:

  1. 所有线程总和输入的子集;
  2. 同步;
  3. 然后每个线程累积来自其他线程的部分结果;
  4. 主线程将所有线程的中间值相加,然后确定是否继续.

分析没有帮助.我不确定哪些数据有助于理解我的代码 - 请问问.

这让我很困惑.

performance multithreading pthreads

7
推荐指数
2
解决办法
4361
查看次数

ExecuteRegisteredAsyncTasks是否释放请求处理线程以服务其他请求?

我注意到ExecuteRegisteredAsyncTasks调用返回后的代码与该调用之前的代码在同一线程中执行。因此,我知道手动调用ExecuteRegisteredAsyncTasks不会释放请求处理线程来处理其他请求,并且应该仅自动调用此方法以获得扩展好处?

在msdn上是示例代码,但帮助无法回答此问题。

更新

就我而言,PageAsyncTasks我异步调用Web服务(使用Begin *和End *),所以我不使用线程池。

.net c# asp.net iis web-services

2
推荐指数
1
解决办法
752
查看次数

多个异步/等待链接

如何在C#中进行多个异步/等待链接?例如,启动少量HTTP请求,然后不要等待所有这些请求,但在每次完成后启动新请求

c# async-await

2
推荐指数
1
解决办法
4972
查看次数

继续运行特定数量的任务

我一直试图这样做:

创建'N'任务以执行并持续运行此数量的一段时间,在这种情况下,一个任务完成,然后我应该开始一个新任务以保持相同数量的任务.

我不知道是否可以使用TaskScheduler处理这个问题,或者我必须创建一个自定义的TaskScheduler.

我认为可以使用的另一个选项是,当任务完成时使用TPL DataFlow Producer-Consumer,然后taskcheduler接受生产者生成的新任务.

问题是:当一个任务完成以保持相同数量的任务时,如何创建新任务?

.net c# task task-parallel-library

1
推荐指数
1
解决办法
932
查看次数