AsyncEnumerableExtensions.cs z

public static class Extensions

{

public static async Task ForEachAsync<T, U>(this IEnumerable<T> collection, Func<T, Task<U>> body, IObserver<U> observer
= null)

{

foreach (var
item in collection)

{

var res = await body(item);

if (null != observer)

{

observer.OnNext(res);

}

}

}

public static async Task ForEachAsyncPerformance<T, U>(this IEnumerable<T> collection, Func<T, Task<U>> body, IObserver<U> observer
= null)

{

var enumerator =
collection.GetEnumerator();

Task<U> task = null;

if (enumerator.MoveNext())

{

task = body(enumerator.Current);

}

while (enumerator.MoveNext())

{

var item = enumerator.Current;

var res = await task;

task = body(item);

if (null != observer)

{

observer.OnNext(res);

}

}

if (null != task)

{

var res = await task;

if (null != observer)

{

observer.OnNext(res);

}

}

}

public static async Task ForEachAsync<T, U>(this IEnumerable<T> collection, int
parallelism, Func<T, Task<U>> body, IObserver<U> observer
= null)

{

int inFlight =
0;

var tasks =
new HashSet<Task<U>>();

foreach (var
item in collection)

{

if (inFlight
>= parallelism)

{

var task = await Task.WhenAny(tasks);

tasks.Remove(task);

inFlight--;

if (null != observer)

{

observer.OnNext(task.Result);

}

}

inFlight++;

tasks.Add(body(item));

}

while (inFlight
> 0)

{

var task = await Task.WhenAny(tasks);

tasks.Remove(task);

inFlight--;

if (null != observer)

{

observer.OnNext(task.Result);

}

}

}

}

AsyncEnumerableExtensions.cs z

时间: 2024-11-22 18:46:00

AsyncEnumerableExtensions.cs z的相关文章

PAT从零单排

偶然原因开始了PAT之旅前前后后用了3天时间刷完了PAT Basic(35题) 现在记录下从零单排的过程,总的来说题目很简单 当然有个别题目的坑点还是比较给力的,准确的说,题目的数据很给力 1001. 害死人不偿命的(3n+1)猜想 (15) 纯模拟题,是偶数除以2,奇数(3n+1)除以2,到1结束 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n,

(转载)3D 图形编程的数学基础(3) 矩阵基本变换

原文地址:http://blog.csdn.net/vagrxie/article/details/5016143 版权声明:本作品由九天雁翎创作,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可.http://www.jtianling.com 目录(?)[+] write by 九天雁翎(JTianLing) -- blog.csdn.NET/vagrxie 讨论新闻组及文件 这里开始,是真正的与3D图形编程相关的知识了,前两节只能算是纯数学. 平移矩阵 要想将向量(x, y,

巳凭事叵志ac7kmh99

列表既然作为主角,如果连一点潜能都没有,那也很难写了.我要写的是一个特别勤奋.努力,但又不缺乏天赋的主人公."各位贵宾好,我是今天的拍卖师久久,很荣幸主持这场顶级拍卖.各位贵宾时间宝贵,我们的拍卖现在开始.下面,请各位贵宾鉴赏今日的第一件拍品."贝贝点了点头,道:"我也很意外,但也很惊喜.怎么?你不高兴么?要知道,我们七人之中可有五个都是咱们唐门的人."霍雨浩听着天梦冰蚕的讲述,突然有种奇怪的感觉,它这天梦冰蚕的名字,不会是因为天天做梦而起的吧?王冬抢上几步冲入宿舍

圩苈炭苣叟g1667dchzb7

灰色并未褪去,但也并未向天梦冰蚕发起侵蚀.霍雨浩道:"怎们先试试浩冬之力的恢复能力."一边说着,他向王冬抬起了双手."哧哧哧哧哧--"一连串的破空声中,欧阳俊逸震惊的看到,自己的剑喙蜂鸟武魂第一魂技蜂鸟闪烁刺在光明女神蝶前翼上,竟然只是泛起一圈圈金色光晕,以剑喙蜂鸟的锋锐,居然无法突破那羽翼的强度.紧接着,那巨大的前翼就扇到了他面前.曹瑾轩没好气的道:"我还想拉屎呢.""你们是什么人.使用飞行魂导器接近我军有何目的."一边说着

hdu 4779 Tower Defense 2013杭州现场赛

1 /** 2 题意: 有两种塔,重塔,轻塔.每种塔,能攻击他所在的一行和他所在的一列, 轻塔不 能被攻击,而重塔可以被至多一个塔攻击,也就是说重塔只能被重塔攻击.在一个n*m 的矩阵中,最少放一个塔,可放多个 3 问,给定p个重塔,q个轻塔,问有多少种放法.. 4 5 思路: 1. 一行中有两个重塔, 6 2. 一列中有两个重塔 7 3. 在该行及在该行塔所在的列只有一个塔,重塔或者轻塔. 8 对以上三种情况 9 挨个处理: 10 1. 设有i行有两个重塔,j列有两个重塔,则一共占 i+2*j

C lang: IOCCC

#include<stdio.h> typedef unsigned int _;_ d,b, #define i(I1,Il,lI)if(Il){lI;}else{I1;} I[256], n,y,a,r,u,k,o ,L,l[ 256],O,K[ /**/ #define q(g) g char *C, *Q,c[ ]= "KfW" "" "Ww|" /* 'UU! % NYA! */ "Z}" ";

[Z]图灵奖获得者Richard Karp讲述Berkeley CS的发展史

A Personal View of Computer Science at Berkeley 赤裸裸的吊炸天

Path类型的扩展方法 z

写了一个基于System.IO.Path类型方法的扩展类型,用于快速对文件系统路径进行操作.如下图: 其中有许多方法就是直接调用Path类型的静态方法.比如AppendPath方法内部会直接调用Path.Combine.这些方法就不需要再介绍了.下面看一些许多说明的方法: ToDirectory方法会把一个文件路径放到文件夹路径内并返回结果,比如: var path =@"C:\a\b\c.jpg"; Console.WriteLine(path.ToDirectory(@"

[Z] 计算机类会议期刊根据引用数排名

一位cornell的教授做的计算机类期刊会议依据Microsoft Research引用数的排名 link:http://www.cs.cornell.edu/andru/csconf.html The following are the journals and conferences in computer science that have published at least 100 papers (2003–2013), with at least 5 citations per pa