草庐IT

C++并行排序

全部标签

c# - 如何按降序对 DateTime 对象的 ArrayList 进行排序?

如何按降序对DateTime对象的ArrayList进行排序?谢谢。 最佳答案 首先,除非您坚持使用框架1.1,否则您不应该使用ArrayList根本。您应该使用强类型泛型List相反。对于自定义排序,Sort重载了采用比较器的方法。通过反转常规比较,您可以按降序排序:list.Sort(delegate(DateTimex,DateTimey){returny.CompareTo(x);});更新:使用C#3中的lambda表达式,委托(delegate)更容易创建:list.Sort((x,y)=>y.CompareTo(x))

c# - 不同 CLR 版本上的不同排序结果

在C#中比较字符串时,不同的clr在Windows7sp1x64上给出不同的结果。这是示例代码:ListmyList=newList();myList.AddRange(new[]{"!-","-!","&-l","&l-","-(","(-","-*","*-",".-","-.","/'","-/"});myList.Sort();Console.WriteLine(Environment.Version);myList.ForEach(Console.WriteLine);Console.WriteLine();Console.WriteLine(string.Compare("

c# - 如何并行运行 LINQ 'let' 语句?

我有这样的代码:varlist=newList{1,2,3,4,5};varresult=fromxinlist.AsParallel()leta=LongRunningCalc1(x)letb=LongRunningCalc2(x)selectnew{a,b};假设LongRunningCalc方法每个都需要1秒。上面的代码运行大约需要2秒,因为虽然5个元素的列表是并行操作的,但从let语句调用的两个方法是顺序调用的。但是,这些方法也可以安全地并行调用。它们显然需要为select合并回来,但在那之前应该并行运行-select应该等待它们。有什么办法可以实现吗?

c# - C#中的并行编程

我对学习C#.NET中的并行编程很感兴趣(不是什么都知道,而是基础知识和一些好的实践),因此我决定重新编写我的一个旧程序,它是称为ImageSyncer。ImageSyncer是一个非常简单的程序,它所做的就是扫描一个文件夹并找到所有以.jpg结尾的文件,然后它根据它们的拍摄日期计算文件的新位置(解析xif数据,或其他任何内容)它被称为)。生成位置后,程序会检查该位置是否存在任何现有文件,如果存在,它会查看要复制的文件和“以其方式”文件的最后写入时间。如果它们相等,则跳过该文件。如果不是,则创建并匹配两个文件的md5校验和。如果没有匹配项,则为要复制的文件指定要复制到的新位置(例如,如

c# - 在编辑器中对枚举项进行排序

有人知道在代码编辑器中对枚举项进行排序的方法吗,例如使用resharper或其他VS插件(即按字母顺序或整数值对项目排序)?在一个项目中,我有一些巨大的枚举,里面有未排序的标签,对它们进行排序有助于提高可读性。编辑:只是指出,因为很多人都提到过这一点,所以我完全知道在编译时分配给枚举项的“自动值”,如果它们没有明确的值的话。为了更清楚一点,举两个例子:publicenumColors{//////Yellowcolor///Yellow,//////Greencolor///Green,//////Bluecolor///Blue,//////Redcolor///Red}->我们可能

c# - 为什么 volatile 和 MemoryBarrier 不阻止操作重新排序?

如果我正确理解volatile和MemoryBarrier的含义,那么下面的程序将永远无法显示任何结果。每次我运行它时,它都会捕获写入操作的重新排序。我在Debug或Release中运行它并不重要。将它作为32位或64位应用程序运行也没有关系。为什么会这样?usingSystem;usingSystem.Threading;usingSystem.Threading.Tasks;namespaceFlipFlop{classProgram{//Declaringthesevariablesasvolatileshouldinstructcompilerto//flushallcache

c# - 内存重新排序会导致 C# 访问未分配的内存吗?

据我了解,C#是一种安全语言,不允许访问未分配的内存,除非通过unsafe关键字。但是,它的内存模型允许在线程之间存在不同步访问时重新排序。这会导致竞争危险,其中对新实例的引用似乎在实例完全初始化之前可用于竞争线程,并且是双重检查锁定的一个众所周知的问题。ChrisBrumme(来自CLR团队)在他们的MemoryModel中解释了这一点文章:Considerthestandarddouble-lockingprotocol:if(a==null){lock(obj){if(a==null)a=newA();}}Thisisacommontechniqueforavoidingaloc

c# - 使用自定义 IComparer 对 CollectionViewSource 进行排序

我正在尝试对派生自CollectionViewSource的集合进行排序,该集合仅具有用于排序的SortDescriptions。不幸的是,我需要能够使用我自己的自定义IComparer,但我似乎无法找到一种方法来做到这一点。想想数据网格,我有自己的多列排序算法。我在想一种方法是使用实​​现CollectionChanged的​​集合,它是CollectionViewSource和我的真实数据源之间的附加层,但如果有人有任何建议,我真的更喜欢更好的方法。 最佳答案 BeaStollnitz有一个自定义排序示例here.那篇文章的重点

c# - C#中的并行树遍历

我需要快速遍历一棵树,我想并行进行。我宁愿使用并行扩展,也不愿手动启动一堆线程。我当前的代码看起来像这样:publicvoidTraverse(Noderoot){varnodeQueue=newQueue();nodeQueue.Enqueue(root);while(nodeQueue.Count!=0){varnode=nodeQueue.Dequeue();if(node.Property=someValue)DoSomething(node);foreach(varnodeinnode.Children){nodeQueue.Enqueue(node);}}}我真的希望Par

c# - 具有指定结果的任务并行库 WaitAny

我正在尝试编写一些代码来并行调用多个不同服务器的Web服务,因此TPL似乎是显而易见的选择。我的Web服务调用中只有一个会返回我想要的结果,而其他所有调用都不会。我正在尝试找到一种有效地拥有Task.WaitAny的方法,但只有在第一个匹配条件的Task返回时才解除阻塞。我尝试使用WaitAny但无法确定过滤器的放置位置。我做到了这一点:publicvoidSearchServers(){varservers=new[]{"server1","server2","server3","server4"};vartasks=servers.Select(s=>Task.Factory.St