concurrency相关内容

当ThreadPool.QueueUserWorkItem返回false

在MSDN指出该方法返回 true,如果该方法成功地 排队; NotSupportedException异常是 如果抛出的工作项目不排队。 有关测试的目的如何让该方法返回假?或者它只是一个“次优”级的设计? 解决方案 在查看源$ C ​​$ C的反射,似乎在code,可以返回“假”的唯一部件就是调用如下: [MethodImpl(MethodImplOptions.Internal ..
发布时间:2015-11-25 15:18:35 C#/.NET

如何线程安全是不可变的对象?

都说不可变对象是线程安全的,但是这是为什么? 取在多核CPU上运行以下情形: 核心1为内存位置读取一个对象的0x100 并缓存在核心1的L1 / L2高速缓存; 在GC的位置内存收集这些对象,因为它已成为资格和的0x100 可用于新的对象; 在酷睿2的分配(immutable)的对象,它位于地址的0x100 ; 核心1获取一个对这个新对象,并在内存中的位置的0x100 读取它。 在这种情况下 ..
发布时间:2015-11-25 15:05:54 C#/.NET

如何创建无重复ConcurrentQueue?

我需要一个concurent集合,不允许重复(在BlockingCollection使用作为生产者/消费者)。 我并不需要严格的顺序元素。 从另一个的手,我希望尽量减少元素“活”在收集的最长时间。即集合不得后进先出法,理想情况下应该做到先进先出。 嗯,我会说我需要ConcurrentQueue,没有重复允许的,但ConcurrentBag的不重复也可以正常工作。 为什么C#不包含这样的,事情可 ..
发布时间:2015-11-25 15:00:15 C#/.NET

我怎么可以混合并发运行时使用.NET code?

我一直使用并发运行时在C ++静态图书馆,最近想使用这个库在C ++ / CLI的项目,以充分利用Windows窗体设计器,避免MFC。不幸的是,并发运行时不与C ++ / CLI所需/ clr开关兼容。我试着周围使用并发运行时中所包含的头文件“的#pragma非托管...的#pragma管理”的指令,但同时这对我来说与其他code在过去的工作,它似乎并没有工作在这种情况下。我的意思是,我得到了错 ..
发布时间:2015-11-25 14:30:35 C#/.NET

如何消耗BlockingCollection< T>分批

我已经想出了一些code消耗从队列中的所有瓦亭项目。而不是1加工项目1,是有意义的处理都在等着项目为一组。 我宣布我的队列是这样的。 私人BlockingCollection<项目>项目= 新BlockingCollection<项目>(新ConcurrentQueue<项目>); 然后,在一个消费者线程,我打算读的项目在这样的批次, 项目 ..
发布时间:2015-11-25 14:10:39 C#/.NET

ASP.NET开发服务器的并发处理不起作用

我试图找出为什么ASP.NET开发服务器不处理请求的并发。 所以,我创建了一个简单的aspx页面有以下code: 保护小组的Page_Load(BYVAL发件人为对象,BYVALË作为System.EventArgs)把手Me.Load System.Threading.Thread.Sleep(10000) 结束小组 如果我打开网页的两倍,反应需要20秒。这意味着,服务器执行的请 ..
发布时间:2015-11-25 14:06:07 C#/.NET

我可以prevent从锁定一个文本文件,而这是在使用一个StreamReader?

该StreamReader的锁定,而它的文本文件阅读。 我可以强制的StreamReader在“只读”或“非锁定”模式下工作? 我的解决方法是将文件复制到一个临时位置,并从那里读取它,但我会preFER如果可能的话直接使用的StreamReader。 任何替代suggetions? 背景: 我写了一个小的应用程序得到一些统计出来的日志文件中。该文件不断被由外部程序更新(几次),让通话AAX ..
发布时间:2015-11-25 13:17:41 C#/.NET

为什么我的线程的.net应用程序扩展线性分配大量内存的时候?

我碰到一些奇怪的大内存分配在.NET运行时的可扩展性的影响。在我的测试应用程序创建大量的在紧密循环的周期固定数量的字符串,并吐出每秒循环迭代的速度。怪胎来当我运行这个循环中的多个线程中 - 似乎,房价不会呈线性增长。这个问题得到当您创建大型字符串更糟。 让我来告诉你结果。我的机器是运行Windows Server 2008 R1,32位的8GB,8芯盒。它有两个4核Intel Xeon 1.83 ..
发布时间:2015-11-25 12:55:31 C#/.NET

返回集合为只读

我在多线程环境中的对象,保持信息的集合,例如: 公开的IList<字符串>数据 { 得到 { 返回的数据; } } 我现在有返回数据; 包裹一个 ReaderWriterLockSlim 来保护共享冲突的集合。不过,为了以防万一,我想返回集合为只读,这样调用code是无法更改的收集,只有查看的内容已经存在。这是在所有可能的? 解决方 ..
发布时间:2015-11-25 12:49:12 C#/.NET

嵌套Parallel.ForEach循环

我有一些code我目前优化并行多核架构。在我的班级之一,我发现了一个嵌套的的foreach 循环。基本上是通过的NetworkInterface 对象的数组,外循环迭代。内循环迭代虽然网络接口的IP地址。 这让我想起了,是有嵌套 Parallel.ForEach 循环一定是个好主意?看完这篇文章(在我的例子中,环路做不同的事情,所以,我应该: 使用嵌套Parallel.ForEach循环? 在 ..
发布时间:2015-11-24 22:30:40 C#/.NET

名单< T>同时删除和添加

我也不太清楚,所以我想我会问。会删除和添加项目到 System.Collections.Generic.List<> 对象是非线程安全的。 我的情况: 当接收到一个连接,它被添加到列表中,而且在同一时间,有一个工人是真实除去死连接和这样 时有问题吗?将一个锁定吗? 我也想知道如果我允许的列表对象上使用的锁与它的的Foreach<> 方法 解决方案 是,添加和删除项 ..
发布时间:2015-11-24 22:03:24 C#/.NET

是HttpClient的安全同时使用?

在所有的例子中我能找到的HttpClient用法,它用于一次性呼叫。但是,如果我有一个持续的客户端的情况,其中多个请求可以同时做?基本上,它是安全的呼吁client.PostAsync 2线程同时对HttpClient的的同一个实例。 我不是真的找的实验结果在这里。作为工作例子可以简单地是一个吸虫(和持久一个在那),和一个失败的例子可以是一个错误配置的问题。理想的情况是我在寻找的HttpClie ..
发布时间:2015-11-24 20:44:51 C#/.NET

使用Thread.Abort的()和处理ThreadAbortException在.NET安全的做法?

我需要建立在C#中的多线程的Azure工作者角色 - 创建多个线程,饲料要求对他们来说,每个请求可能需要一些很长的时间来处理(不是我的code - 我会打电话给一个COM对象做实际的工作)。 当角色关机,我需要正常停止处理。我怎么做?看起来,如果我只是叫 Thread.Abort的()的 ThreadAbortException 被扔在线程和线程甚至可以使用的try-catch-最后(或使用)清 ..
发布时间:2015-11-24 20:17:25 C#/.NET

Parallel.ForEach不断产生新的线程

当我在我的程序中使用Parallel.ForEach,我发现某些线程似乎从来没有结束。事实上,它不停地一遍又一遍产生新的线程,我没想到,绝对不希望的行为。 我能够重现此问题有以下code的,就像我的“真正”的程序,无论使用的处理器和内存的大量(.NET 4.0 code): 公共类节点 { 公共节点previous {获得;私定; } 公共节点(节点previous) ..

异步WPF命令

的注意:在code在这个问题的一部分 deSleeper ,如果你想完整的源代码。的 一个我想了命令的事情是烤设计异步操作。我想pssed禁用,而命令被执行,回来时完成按钮$ P $。我想在一个线程池工作项目执行的实际工作。最后,我想一个办法来处理异步处理过程中发生任何错误。 我的解决方案是一个AsyncCommand: 公共抽象类AsyncCommand:ICommand的 { 公共事件的 ..
发布时间:2015-11-24 16:05:58 C#/.NET

ConcurrentDictionary陷阱 - 从GetOrAdd和AddOrUpdate代表工厂同步?

的文档 ConcurrentDictionary 不明确的,所以我想我们不能指望代表的 valueFactory 和 updateValueFactory 的有自己的执行sinchronized(从GetOrAdd()和AddOrUpdate分别为()操作的) 所以,我认为我们无法实现使用它们内部资源,这需要,而无需手动实现我们自己的并发控制,也许只是使用并发控制的 [MethodImpl(Me ..
发布时间:2015-11-24 16:05:13 C#/.NET

如何保证时间戳始终是唯一的?

我使用时间戳时间顺序在我的程序并发修改,并要求改变每个时间戳是唯一的。然而,我发现,简单地调用 DateTime.Now 是不够的,好象叫临门它通常会返回相同的值。 我有一些想法,但没有给我的印象“最好”的解决了这个。有没有我可以写这将保证每个连续调用产生一个独特的方法的DateTime ? 如果我也许可以使用不同类型的这一点,也许一个长整型? 的DateTime 有被轻松地跨preTABLE ..
发布时间:2015-11-24 16:03:41 C#/.NET

为什么ConcurrentBag< T>在.net(4.0)这么慢?我是不是做错了?

在我启动了一个项目,我写了一个简单的测试,以ConcurrentBag从(System.Collections.Concurrent)相对性能比较锁定和放大器;名单。我感到非常惊讶,ConcurrentBag比用一个简单的列表锁定慢10倍以上。据我了解,在ConcurrentBag效果最好时,读写器是相同的线程。但是,我没有想到它的性能会比传统的锁差这么多。 我对循环写入和列表/袋读运行一个测试 ..
发布时间:2015-11-24 16:02:40 C#/.NET

在.NET 4.0中并行优先级队列

似乎有很多的改进,在.NET 4.0中涉及到可能依赖于并行优先级队列的并发。有内部骨架像样的优先级队列实现可重用? 解决方案 有一个实施的“样品与.NET Framework的并行编程”在MSDN的一部分。请参见 ParallelExtensionsExtras 。 直接链接到源$ C ​​$ C文件 ..
发布时间:2015-11-24 15:36:39 C#/.NET

如何在.net实施ConcurrentHashSet

我想在ConcurrentDictionary的精神来实现ConcurrentHashSet, 采取的办法是使用一个内部的支持ConcurrentDictionary,写小委派的方法,这是我有多远了,但还有集合论方法是我坚持的,尤其。我不知道如果我可以用一个foreach,但仍不能违反并发 公共类ConcurrentHashSet< TElement> :的ISet< TEle ..
发布时间:2015-11-24 15:36:19 C#/.NET