Hello World
Spiga

分类:并行处理

浅谈线程池(下):相关试验及注意事项

2009-10-20 00:06 by 老赵, 23493 visits
摘要:三个月,整整三个月了,我忽然发现我还有三个月前的一个小系列的文章没有结束,我还欠一个试验!线程池是.NET中的重要组件,几乎所有的异步功能依赖于线程池。之前我们讨论了线程池的作用、独立线程池的存在意义,以及对CLR线程池和IO线程池进行了一定说明。不过这些说明可能有些“抽象”,于是我们还是要通过试验来“验证”这些说明。此外,我认为针对某个“猜想”来设计一些试验进行验证是非常重要的能力,如果您这方面的能力略有不足的话,还是尽量加以锻炼并提高吧。 阅读全文

您能看出这个Double Check里的问题吗?(解答)

2009-09-02 17:16 by 老赵, 7515 visits
摘要:已经很有很多朋友得到了结果,是由于m_categories过早初始化,而导致double check的验证条件被破坏(或者说,满足)。不过,这里我们可以再谈一些更深入地内容,例如Memory Consistency Model。 阅读全文

您能看出这个Double Check里的问题吗?

2009-09-02 15:11 by 老赵, 7530 visits
摘要:昨天在做code review时看到一位同事写了这样的代码。这段代码的目的使用Double Check的做法来保证线程安全的延迟加载。但是我看到这代码之后发现了一个问题,这个问题不是第一次出现。因此,我打算在博客上记录一笔,希望可以给更多人提个醒吧。 阅读全文

适合C# Actor的消息执行方式(6):协变与逆变

2009-08-03 09:19 by 老赵, 6914 visits
摘要:在上一篇文章中,我们实现了一个简单的爬虫,并指出了这种方式的缺陷。现在,我们就来看一下,如何使用C# 4.0中所引入的“协变和逆变”特性来改进这种消息执行方式,这也是我认为在“普适Actor模型”中最合适的做法。这次,我们动真格的了,我们会一条一条地改进前文提出的缺陷。 阅读全文

适合C# Actor的消息执行方式(5):一个简单的网络爬虫

2009-07-27 09:13 by 老赵, 6764 visits
摘要:之前的几篇文章大都在摆一些“小道理”,有经验的朋友容易想象出来其中的含义,不过对于那些还不了解Actor模型的朋友来说,这些内容似乎有些太过了。此外,乒乓测试虽然经典,但是不太容易说明问题。因此,今天我们就来看一个简单的有些简陋的网络爬虫,对于Actor模型的使用来说,它至少比乒乓测试能够说明问题。对了,我们先来使用那“中看不中用”的消息执行方式。 阅读全文

浅谈线程池(中):独立线程池的作用及IO线程池

2009-07-24 09:21 by 老赵, 11735 visits
摘要:在上一篇文章中,我们简单讨论了线程池的作用,以及CLR线程池的一些特性。不过关于线程池的基本概念还没有结束,这次我们再来补充一些必要的信息,这样有助于我们在程序中选择合适的使用方式。例如,为什么要有独立的线程池,CLR线程池到底有什么不足,IO线程池又是什么呢?有了这些准备之后,最后的试验也就非常自然了。 阅读全文

浅谈线程池(上):线程池的作用及CLR线程池

2009-07-22 09:01 by 老赵, 17987 visits
摘要:线程池是一个重要的概念。不过我发现,关于这个话题的讨论似乎还缺少了点什么。作为资料的补充,以及今后文章所需要的引用,我在这里再完整而又简单地谈一下有关线程池,还有.NET中各种线程池的基础。更详细的内容就不多作展开了,有机会我们再详细讨论这方面的细节。这次,还是一个“概述”性质的,希望可以说明白这方面问题的一些概念。文章分两段,我们先来谈谈线程池的作用,及CLR自带的线程池。 阅读全文

适合C# Actor的消息执行方式(4):阶段性总结

2009-07-20 09:19 by 老赵, 5632 visits
摘要:阶段性总结本不在计划之内,不过似乎Actor模型这方面内容还不太受人关注,因此有的朋友也误解这系列文章想要解决的问题是什么。除了这方面的解释之外,我还会对之前提出的几种做法进行综合的对比,可以进一步了解整个演变过程的思路,为接下去的改变做铺垫——因为下次改变就涉及到多个方向,每个方向都是在一定程度上真正可用的方式。 阅读全文

适合C# Actor的消息执行方式(3):中看不中用的解决方案

2009-07-17 08:45 by 老赵, 5334 visits
摘要:在前两篇文章中,我们了解到Erlang中灵活的模式匹配,以及在C#甚至F#中会都遭遇的尴尬局面。那么现在就应该来设计一个解决方案了,我们如何才能在C#这样的语言里顺畅地使用Actor模型呢?不仅如此,最好我们还能获得其它一些优势。但事情总是很难一帆风顺的,最终我们这篇文章只得出一个中看不中用的解决方案。不过……至少方向是正确的吧。 阅读全文

适合C# Actor的消息执行方式(2):C# Actor的尴尬

2009-07-13 00:24 by 老赵, 10901 visits
摘要:在上一篇文章中,我们简单解读了Erlang在执行消息时候的方式。而现在,我们就一起来看看,C# Actor究竟出现了什么样的尴尬。此外,我还打算用F#进行补充说明,最终我们会发现,虽然F#看上去很美,但是在实际使用过程中依旧有些遗憾。 阅读全文

适合C# Actor的消息执行方式(1):Erlang中的模式匹配

2009-07-09 00:18 by 老赵, 7524 visits
摘要:Actor模型为并行而生。由于现在单台机器中独立的计算单元也越来越多,Actor模型的重要性也越来越大。Actor模型的理念是:天下万物皆为Actor,Actor之间通过发送消息进行通信。不同的Actor可以同时处理各自的消息,从而获得了大规模的并发能力。对于.NET平台下的开发人员来说,最常用的语言是C#。不过,无论您使用哪个Actor框架,在消息的执行阶段总是略显尴尬。本文的目的便是提出一种适合C# Actor的消息执行方式,而这种执行方式还会成为我以后公开的C#中“模式匹配”的基础。本文将分为三个部分,您目前正在阅读的第一部分,将会观察Erlang是如何执行消息的。有对比才会有差距,也正是由于Erlang在Actor模型上的示范作用,我们才会意识到C# Actor在使用上有多么的不方便。 阅读全文

天下无处不乒乓

2009-06-24 12:46 by 老赵, 19850 visits
摘要:在消息传递(Message Passing)领域,PingPong是最常见的测试之一。它的功能简单的有些无聊,一个Ping Actor和一个Pong Actor之间互相传递消息,你Ping过来我Pong过去。也正因为如此简单,PingPong的目标仅仅是测试纯粹的消息传递机制的效率。也正因为如此,各Actor模型往往都将其作为展示自己功能的第一个示例。老赵从互联网上收集了一些最为常见的,不同语言/平台下Actor模型实现PingPong的示例,可作“观赏”之用。 阅读全文

ActorLite:一个轻量级Actor模型实现(下)

2009-05-16 17:52 by 老赵, 22880 visits
摘要:在上一篇文章中,我们实现了一个简单的Actor模型。如果要构建一个Actor,便只是简单地继承Actor类型并实现其Receive方法即可。在上次文章的末尾,我们使用C#演示了该Actor模型的使用。不过现在我们将尝试一下F#。 阅读全文

ActorLite:一个轻量级Actor模型实现(中)

2009-05-14 09:29 by 老赵, 25728 visits
摘要:从上一篇文章的反响来看,似乎大家对于这一话题并没有太大兴趣。而这篇文章将会为大家带来一个简单但完整的Actor模型实现。此外,在下一篇文章中……可能会出现一些让您觉得有趣的东西。:) 阅读全文

ActorLite:一个轻量级Actor模型实现(上)

2009-05-11 20:10 by 老赵, 36676 visits
摘要:Actor模型为并行而生,具Wikipedia中的描述,它原本是为大量独立的微型处理器所构建的高性能网络而设计的模型。而目前,单台机器也有了多个独立的计算单元,这就是为什么在并行程序愈演愈烈的今天,Actor模型又重新回到了人们的视线之中了。在这篇文章中,我们会先对Actor Model的相关知识进行简单的介绍。 阅读全文

计算机体系结构与程序性能

2009-01-22 08:28 by 老赵, 13295 visits
摘要:老赵现在不谈“数据结构与算法如何有助于改善编程思维有什么改善”,或是“操作系统中线程调度、内存分页机制对于开发大型应用程序的参考价值”等“虚无缥缈”之物。在这篇文章里,我想通过两个直接的例子,来说明了解计算机体系结构对于提高程序性能有什么样的作用。 阅读全文

讲座展示:Live From Redmond: Microsoft AJAX Patterns - Implementing Predictive Fetch with Microsoft ASP.NET 2.0 AJAX Extensions

2006-12-03 23:17 by 老赵, 2068 visits
摘要:在AJAX形式的Web开发中存在着一些常用的编程模式。在这个讲座里,Joe会讲述并且使用ASP.NET 2.0 AJAX Extensions做一个简单的演示,用来说明“Predictive Fetch”模式。 阅读全文
< Prev 1 2
使用Live Messenger联系我