<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_老赵点滴 - 追求编程之美_分类_09. 并行处理</title><id>http://feed.cnblogs.com/blog/u/12973/category/76656/rss</id><updated>2012-05-27T20:34:45Z</updated><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/category/76656.html"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/12973/category/76656/rss"/><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2010/06/24/first-snda-dotnet-conference-videos.html</id><title type="text">盛大创新院赞助首届.NET技术交流会 - 演讲录像及下载</title><summary type="text">经过几天的努力，终于将盛大创新院赞助的首届.NET技术交流会的演讲录像制作完成了。本来在现在的高清视频以外，我还想像Channel 9一样提供一些低码率的格式下载，但多次尝试都以失败告终，各中滋味难以言喻。因此目前只能给大家提供mov格式的高清视频下载，对于Windows下各类强大的播放器都不成问题。您也可以在线观看这些视频，不过上传至优酷后，发现除了清晰度较低外，甚至还有音画不同步的问题。我正在联系酷六网，会尽快用上质量更好的视频。</summary><published>2010-06-24T14:34:00Z</published><updated>2010-06-24T14:34:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2010/06/24/first-snda-dotnet-conference-videos.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2010/06/24/first-snda-dotnet-conference-videos.html"/><content type="html"/></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2010/03/21/async-and-parallel-design-patterns-in-fsharp-3-more-agents.html</id><title type="text">F#中的异步及并行模式（3 - 下）：代理的进一步使用</title><summary type="text">之前的文章中我们了解了F#中并行及交互式程序的编程方式。在本系列的第3部分中，我们会来探索F#中轻量级的，交互式的代理，以及与代理有关的一些模式，包括隔离的内部状态。（译注：由于原文内容较多，译文拆成两段进行。在上半段文章中讨论了代理的基本使用方式，而下半段则讨论关于代理使用中更进一步的模式。）</summary><published>2010-03-21T10:19:00Z</published><updated>2010-03-21T10:19:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2010/03/21/async-and-parallel-design-patterns-in-fsharp-3-more-agents.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2010/03/21/async-and-parallel-design-patterns-in-fsharp-3-more-agents.html"/><content type="text">之前的文章中我们了解了F#中并行及交互式程序的编程方式。在本系列的第3部分中，我们会来探索F#中轻量级的，交互式的代理，以及与代理有关的一些模式，包括隔离的内部状态。（译注：由于原文内容较多，译文拆成两段进行。在上半段文章中讨论了代理的基本使用方式，而下半段则讨论关于代理使用中更进一步的模式。）</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2010/03/15/async-and-parallel-design-patterns-in-fsharp-3-agents.html</id><title type="text">F#中的异步及并行模式（3 - 上）：代理的基本使用</title><summary type="text">之前的文章中我们了解了F#中并行及交互式程序的编程方式。在本系列的第3部分中，我们会来探索F#中轻量级的，交互式的代理，以及与代理有关的一些模式，包括“隔离的内部状态”。（译注：由于原文较长，因此译文分为两段，目前是第一段，讲解了F#中异步代理的基本使用方式。）</summary><published>2010-03-14T17:35:00Z</published><updated>2010-03-14T17:35:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2010/03/15/async-and-parallel-design-patterns-in-fsharp-3-agents.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2010/03/15/async-and-parallel-design-patterns-in-fsharp-3-agents.html"/><content type="text">之前的文章中我们了解了F#中并行及交互式程序的编程方式。在本系列的第3部分中，我们会来探索F#中轻量级的，交互式的代理，以及与代理有关的一些模式，包括“隔离的内部状态”。（译注：由于原文较长，因此译文分为两段，目前是第一段，讲解了F#中异步代理的基本使用方式。）</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2010/03/08/async-and-parallel-design-patterns-in-fsharp-2-reporting-progress-with-events.html</id><title type="text">F#中的异步及并行模式（2）：反馈进度的事件（包含Twitter示例）</title><summary type="text">上一篇文章中谈到，“异步CPU并行”与“异步I/O并行”两个模式的限制之一便是无法通知组合操作的进度或结果。在这篇文章中，我们讲关注一个常见的异步模式：反馈进度的事件（Reporting Progress with Events），这是一种用于强大而优雅的做法，用于在某个边界之后对并行的执行过程加以封装，并同时汇报执行的结果或是进度。在文章最后，我们会使用这个设计模式开发一个示例，从Twitter中获取一系列记录。</summary><published>2010-03-07T16:33:00Z</published><updated>2010-03-07T16:33:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2010/03/08/async-and-parallel-design-patterns-in-fsharp-2-reporting-progress-with-events.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2010/03/08/async-and-parallel-design-patterns-in-fsharp-2-reporting-progress-with-events.html"/><content type="text">上一篇文章中谈到，“异步CPU并行”与“异步I/O并行”两个模式的限制之一便是无法通知组合操作的进度或结果。在这篇文章中，我们讲关注一个常见的异步模式：反馈进度的事件（Reporting Progress with Events），这是一种用于强大而优雅的做法，用于在某个边界之后对并行的执行过程加以封装，并同时汇报执行的结果或是进度。在文章最后，我们会使用这个设计模式开发一个示例，从Twitter中获取一系列记录。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2010/03/03/async-and-parallel-design-patterns-in-fsharp-1-parallelizing-cpu-and-io-computations.html</id><title type="text">F#中的异步及并行模式（1）：并行CPU及I/O计算</title><summary type="text">F#是一门并行（parallel）及响应式（reactive）语言。这个说法意味着一个F#程序可以存在多个进行中的运算（如使用.NET线程进行F#计算），或是多个等待中的回应（如等待事件或消息的回调函数及代理对象）。 F#的异步表达式是简化异步及响应式程序编写的方式之一。在这篇及今后的文章中，我会探讨一些使用F#进行异步编程的基本方式──大致说来，它们都是F#异步编程时使用的模式。我们从两个简单的设计模式开始：CPU异步并行（Parallel CPU Asyncs）和I/O异步并行（Paralle I/O Asyncs）。</summary><published>2010-03-03T15:37:00Z</published><updated>2010-03-03T15:37:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2010/03/03/async-and-parallel-design-patterns-in-fsharp-1-parallelizing-cpu-and-io-computations.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2010/03/03/async-and-parallel-design-patterns-in-fsharp-1-parallelizing-cpu-and-io-computations.html"/><content type="text">F#是一门并行（parallel）及响应式（reactive）语言。这个说法意味着一个F#程序可以存在多个进行中的运算（如使用.NET线程进行F#计算），或是多个等待中的回应（如等待事件或消息的回调函数及代理对象）。 F#的异步表达式是简化异步及响应式程序编写的方式之一。在这篇及今后的文章中，我会探讨一些使用F#进行异步编程的基本方式──大致说来，它们都是F#异步编程时使用的模式。我们从两个简单的设计模式开始：CPU异步并行（Parallel CPU Asyncs）和I/O异步并行（Paralle I/O Asyncs）。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/11/27/videos-of-pdc09-algorithms-data-structure-visual-studio-documentary.html</id><title type="text">视频：Microsoft PDC 09，算法及数据结构内容及其他</title><summary type="text">这里又有一些新整理好的视频。Microsoft PDC 09是最近的重头，只要您是搞微软技术的，无论关注哪个技术方面，都可以找到许多有用的内容。我也经常从此类大会中了解许多平时不太关注的内容，也算是保持知识的新鲜度。此外，还有算法和数据结构相关的内容，以及有趣的Visual Studio纪录片。</summary><published>2009-11-27T05:57:00Z</published><updated>2009-11-27T05:57:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/11/27/videos-of-pdc09-algorithms-data-structure-visual-studio-documentary.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/11/27/videos-of-pdc09-algorithms-data-structure-visual-studio-documentary.html"/><content type="text">这里又有一些新整理好的视频。Microsoft PDC 09是最近的重头，只要您是搞微软技术的，无论关注哪个技术方面，都可以找到许多有用的内容。我也经常从此类大会中了解许多平时不太关注的内容，也算是保持知识的新鲜度。此外，还有算法和数据结构相关的内容，以及有趣的Visual Studio纪录片。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/10/20/thread-pool-3-lab.html</id><title type="text">浅谈线程池（下）：相关试验及注意事项</title><summary type="text">三个月，整整三个月了，我忽然发现我还有三个月前的一个小系列的文章没有结束，我还欠一个试验！线程池是.NET中的重要组件，几乎所有的异步功能依赖于线程池。之前我们讨论了线程池的作用、独立线程池的存在意义，以及对CLR线程池和IO线程池进行了一定说明。不过这些说明可能有些“抽象”，于是我们还是要通过试验来“验证”这些说明。此外，我认为针对某个“猜想”来设计一些试验进行验证是非常重要的能力，如果您这方面的能力略有不足的话，还是尽量加以锻炼并提高吧。</summary><published>2009-10-19T16:06:00Z</published><updated>2009-10-19T16:06:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/10/20/thread-pool-3-lab.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/10/20/thread-pool-3-lab.html"/><content type="text">三个月，整整三个月了，我忽然发现我还有三个月前的一个小系列的文章没有结束，我还欠一个试验！线程池是.NET中的重要组件，几乎所有的异步功能依赖于线程池。之前我们讨论了线程池的作用、独立线程池的存在意义，以及对CLR线程池和IO线程池进行了一定说明。不过这些说明可能有些“抽象”，于是我们还是要通过试验来“验证”这些说明。此外，我认为针对某个“猜想”来设计一些试验进行验证是非常重要的能力，如果您这方面的能力略有不足的话，还是尽量加以锻炼并提高吧。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/09/02/double-check-failure-answer.html</id><title type="text">您能看出这个Double Check里的问题吗？（解答）</title><summary type="text">已经很有很多朋友得到了结果，是由于m_categories过早初始化，而导致double check的验证条件被破坏（或者说，满足）。不过，这里我们可以再谈一些更深入地内容，例如Memory Consistency Model。</summary><published>2009-09-02T09:16:00Z</published><updated>2009-09-02T09:16:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/09/02/double-check-failure-answer.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/09/02/double-check-failure-answer.html"/><content type="text">已经很有很多朋友得到了结果，是由于m_categories过早初始化，而导致double check的验证条件被破坏（或者说，满足）。不过，这里我们可以再谈一些更深入地内容，例如Memory Consistency Model。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/09/02/double-check-failure.html</id><title type="text">您能看出这个Double Check里的问题吗？</title><summary type="text">昨天在做code review时看到一位同事写了这样的代码。这段代码的目的使用Double Check的做法来保证线程安全的延迟加载。但是我看到这代码之后发现了一个问题，这个问题不是第一次出现。因此，我打算在博客上记录一笔，希望可以给更多人提个醒吧。</summary><published>2009-09-02T07:11:00Z</published><updated>2009-09-02T07:11:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/09/02/double-check-failure.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/09/02/double-check-failure.html"/><content type="text">昨天在做code review时看到一位同事写了这样的代码。这段代码的目的使用Double Check的做法来保证线程安全的延迟加载。但是我看到这代码之后发现了一个问题，这个问题不是第一次出现。因此，我打算在博客上记录一笔，希望可以给更多人提个醒吧。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/08/03/message-execution-model-for-c-sharp-actor-6-covariance-and-contravariance.html</id><title type="text">适合C# Actor的消息执行方式（6）：协变与逆变</title><summary type="text">在上一篇文章中，我们实现了一个简单的爬虫，并指出了这种方式的缺陷。现在，我们就来看一下，如何使用C# 4.0中所引入的“协变和逆变”特性来改进这种消息执行方式，这也是我认为在“普适Actor模型”中最合适的做法。这次，我们动真格的了，我们会一条一条地改进前文提出的缺陷。</summary><published>2009-08-03T01:19:00Z</published><updated>2009-08-03T01:19:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/08/03/message-execution-model-for-c-sharp-actor-6-covariance-and-contravariance.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/08/03/message-execution-model-for-c-sharp-actor-6-covariance-and-contravariance.html"/><content type="text">在上一篇文章中，我们实现了一个简单的爬虫，并指出了这种方式的缺陷。现在，我们就来看一下，如何使用C# 4.0中所引入的“协变和逆变”特性来改进这种消息执行方式，这也是我认为在“普适Actor模型”中最合适的做法。这次，我们动真格的了，我们会一条一条地改进前文提出的缺陷。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/07/27/message-execution-model-for-c-sharp-actor-5-a-simple-web-crawler.html</id><title type="text">适合C# Actor的消息执行方式（5）：一个简单的网络爬虫</title><summary type="text">之前的几篇文章大都在摆一些“小道理”，有经验的朋友容易想象出来其中的含义，不过对于那些还不了解Actor模型的朋友来说，这些内容似乎有些太过了。此外，乒乓测试虽然经典，但是不太容易说明问题。因此，今天我们就来看一个简单的有些简陋的网络爬虫，对于Actor模型的使用来说，它至少比乒乓测试能够说明问题。对了，我们先来使用那“中看不中用”的消息执行方式。</summary><published>2009-07-27T01:13:00Z</published><updated>2009-07-27T01:13:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/27/message-execution-model-for-c-sharp-actor-5-a-simple-web-crawler.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/27/message-execution-model-for-c-sharp-actor-5-a-simple-web-crawler.html"/><content type="text">之前的几篇文章大都在摆一些“小道理”，有经验的朋友容易想象出来其中的含义，不过对于那些还不了解Actor模型的朋友来说，这些内容似乎有些太过了。此外，乒乓测试虽然经典，但是不太容易说明问题。因此，今天我们就来看一个简单的有些简陋的网络爬虫，对于Actor模型的使用来说，它至少比乒乓测试能够说明问题。对了，我们先来使用那“中看不中用”的消息执行方式。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/07/24/thread-pool-2-dedicate-pool-and-io-pool.html</id><title type="text">浅谈线程池（中）：独立线程池的作用及IO线程池</title><summary type="text">在上一篇文章中，我们简单讨论了线程池的作用，以及CLR线程池的一些特性。不过关于线程池的基本概念还没有结束，这次我们再来补充一些必要的信息，这样有助于我们在程序中选择合适的使用方式。例如，为什么要有独立的线程池，CLR线程池到底有什么不足，IO线程池又是什么呢？有了这些准备之后，最后的试验也就非常自然了。</summary><published>2009-07-24T01:21:00Z</published><updated>2009-07-24T01:21:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/24/thread-pool-2-dedicate-pool-and-io-pool.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/24/thread-pool-2-dedicate-pool-and-io-pool.html"/><content type="text">在上一篇文章中，我们简单讨论了线程池的作用，以及CLR线程池的一些特性。不过关于线程池的基本概念还没有结束，这次我们再来补充一些必要的信息，这样有助于我们在程序中选择合适的使用方式。例如，为什么要有独立的线程池，CLR线程池到底有什么不足，IO线程池又是什么呢？有了这些准备之后，最后的试验也就非常自然了。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/07/22/thread-pool-1-the-goal-and-the-clr-thread-pool.html</id><title type="text">浅谈线程池（上）：线程池的作用及CLR线程池</title><summary type="text">线程池是一个重要的概念。不过我发现，关于这个话题的讨论似乎还缺少了点什么。作为资料的补充，以及今后文章所需要的引用，我在这里再完整而又简单地谈一下有关线程池，还有.NET中各种线程池的基础。更详细的内容就不多作展开了，有机会我们再详细讨论这方面的细节。这次，还是一个“概述”性质的，希望可以说明白这方面问题的一些概念。文章分两段，我们先来谈谈线程池的作用，及CLR自带的线程池。</summary><published>2009-07-22T01:01:00Z</published><updated>2009-07-22T01:01:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/22/thread-pool-1-the-goal-and-the-clr-thread-pool.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/22/thread-pool-1-the-goal-and-the-clr-thread-pool.html"/><content type="text">线程池是一个重要的概念。不过我发现，关于这个话题的讨论似乎还缺少了点什么。作为资料的补充，以及今后文章所需要的引用，我在这里再完整而又简单地谈一下有关线程池，还有.NET中各种线程池的基础。更详细的内容就不多作展开了，有机会我们再详细讨论这方面的细节。这次，还是一个“概述”性质的，希望可以说明白这方面问题的一些概念。文章分两段，我们先来谈谈线程池的作用，及CLR自带的线程池。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/07/20/message-execution-model-for-c-sharp-actor-4-mid-stage-conclusion.html</id><title type="text">适合C# Actor的消息执行方式（4）：阶段性总结</title><summary type="text">阶段性总结本不在计划之内，不过似乎Actor模型这方面内容还不太受人关注，因此有的朋友也误解这系列文章想要解决的问题是什么。除了这方面的解释之外，我还会对之前提出的几种做法进行综合的对比，可以进一步了解整个演变过程的思路，为接下去的改变做铺垫——因为下次改变就涉及到多个方向，每个方向都是在一定程度上真正可用的方式。</summary><published>2009-07-20T01:19:00Z</published><updated>2009-07-20T01:19:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/20/message-execution-model-for-c-sharp-actor-4-mid-stage-conclusion.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/20/message-execution-model-for-c-sharp-actor-4-mid-stage-conclusion.html"/><content type="text">阶段性总结本不在计划之内，不过似乎Actor模型这方面内容还不太受人关注，因此有的朋友也误解这系列文章想要解决的问题是什么。除了这方面的解释之外，我还会对之前提出的几种做法进行综合的对比，可以进一步了解整个演变过程的思路，为接下去的改变做铺垫——因为下次改变就涉及到多个方向，每个方向都是在一定程度上真正可用的方式。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/07/17/message-execution-model-for-c-sharp-actor-3-nice-solution-with-little-use.html</id><title type="text">适合C# Actor的消息执行方式（3）：中看不中用的解决方案</title><summary type="text">在前两篇文章中，我们了解到Erlang中灵活的模式匹配，以及在C#甚至F#中会都遭遇的尴尬局面。那么现在就应该来设计一个解决方案了，我们如何才能在C#这样的语言里顺畅地使用Actor模型呢？不仅如此，最好我们还能获得其它一些优势。但事情总是很难一帆风顺的，最终我们这篇文章只得出一个中看不中用的解决方案。不过……至少方向是正确的吧。</summary><published>2009-07-17T00:45:00Z</published><updated>2009-07-17T00:45:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/17/message-execution-model-for-c-sharp-actor-3-nice-solution-with-little-use.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/17/message-execution-model-for-c-sharp-actor-3-nice-solution-with-little-use.html"/><content type="text">在前两篇文章中，我们了解到Erlang中灵活的模式匹配，以及在C#甚至F#中会都遭遇的尴尬局面。那么现在就应该来设计一个解决方案了，我们如何才能在C#这样的语言里顺畅地使用Actor模型呢？不仅如此，最好我们还能获得其它一些优势。但事情总是很难一帆风顺的，最终我们这篇文章只得出一个中看不中用的解决方案。不过……至少方向是正确的吧。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/07/13/message-execution-model-for-c-sharp-actor-2-embarrassing-c-sharp-actor.html</id><title type="text">适合C# Actor的消息执行方式（2）：C# Actor的尴尬</title><summary type="text">在上一篇文章中，我们简单解读了Erlang在执行消息时候的方式。而现在，我们就一起来看看，C# Actor究竟出现了什么样的尴尬。此外，我还打算用F#进行补充说明，最终我们会发现，虽然F#看上去很美，但是在实际使用过程中依旧有些遗憾。</summary><published>2009-07-12T16:24:00Z</published><updated>2009-07-12T16:24:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/13/message-execution-model-for-c-sharp-actor-2-embarrassing-c-sharp-actor.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/13/message-execution-model-for-c-sharp-actor-2-embarrassing-c-sharp-actor.html"/><content type="text">在上一篇文章中，我们简单解读了Erlang在执行消息时候的方式。而现在，我们就一起来看看，C# Actor究竟出现了什么样的尴尬。此外，我还打算用F#进行补充说明，最终我们会发现，虽然F#看上去很美，但是在实际使用过程中依旧有些遗憾。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/07/09/message-execution-model-for-c-sharp-actor-1-pattern-matching-in-erlang.html</id><title type="text">适合C# Actor的消息执行方式（1）：Erlang中的模式匹配</title><summary type="text">Actor模型为并行而生。由于现在单台机器中独立的计算单元也越来越多，Actor模型的重要性也越来越大。Actor模型的理念是：天下万物皆为Actor，Actor之间通过发送消息进行通信。不同的Actor可以同时处理各自的消息，从而获得了大规模的并发能力。对于.NET平台下的开发人员来说，最常用的语言是C#。不过，无论您使用哪个Actor框架，在消息的执行阶段总是略显尴尬。本文的目的便是提出一种适合C# Actor的消息执行方式，而这种执行方式还会成为我以后公开的C#中“模式匹配”的基础。本文将分为三个部分，您目前正在阅读的第一部分，将会观察Erlang是如何执行消息的。有对比才会有差距，也正是由于Erlang在Actor模型上的示范作用，我们才会意识到C# Actor在使用上有多么的不方便。</summary><published>2009-07-08T16:18:00Z</published><updated>2009-07-08T16:18:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/09/message-execution-model-for-c-sharp-actor-1-pattern-matching-in-erlang.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/07/09/message-execution-model-for-c-sharp-actor-1-pattern-matching-in-erlang.html"/><content type="text">Actor模型为并行而生。由于现在单台机器中独立的计算单元也越来越多，Actor模型的重要性也越来越大。Actor模型的理念是：天下万物皆为Actor，Actor之间通过发送消息进行通信。不同的Actor可以同时处理各自的消息，从而获得了大规模的并发能力。对于.NET平台下的开发人员来说，最常用的语言是C#。不过，无论您使用哪个Actor框架，在消息的执行阶段总是略显尴尬。本文的目的便是提出一种适合C# Actor的消息执行方式，而这种执行方式还会成为我以后公开的C#中“模式匹配”的基础。本文将分为三个部分，您目前正在阅读的第一部分，将会观察Erlang是如何执行消息的。有对比才会有差距，也正是由于Erlang在Actor模型上的示范作用，我们才会意识到C# Actor在使用上有多么的不方便。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/06/24/everything-ping-pong.html</id><title type="text">天下无处不乒乓</title><summary type="text">在消息传递（Message Passing）领域，PingPong是最常见的测试之一。它的功能简单的有些无聊，一个Ping Actor和一个Pong Actor之间互相传递消息，你Ping过来我Pong过去。也正因为如此简单，PingPong的目标仅仅是测试纯粹的消息传递机制的效率。也正因为如此，各Actor模型往往都将其作为展示自己功能的第一个示例。老赵从互联网上收集了一些最为常见的，不同语言/平台下Actor模型实现PingPong的示例，可作“观赏”之用。</summary><published>2009-06-24T04:46:00Z</published><updated>2009-06-24T04:46:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/06/24/everything-ping-pong.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/06/24/everything-ping-pong.html"/><content type="text">在消息传递（Message Passing）领域，PingPong是最常见的测试之一。它的功能简单的有些无聊，一个Ping Actor和一个Pong Actor之间互相传递消息，你Ping过来我Pong过去。也正因为如此简单，PingPong的目标仅仅是测试纯粹的消息传递机制的效率。也正因为如此，各Actor模型往往都将其作为展示自己功能的第一个示例。老赵从互联网上收集了一些最为常见的，不同语言/平台下Actor模型实现PingPong的示例，可作“观赏”之用。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/05/16/a-simple-actor-model-implementation-3.html</id><title type="text">ActorLite：一个轻量级Actor模型实现（下）</title><summary type="text">在上一篇文章中，我们实现了一个简单的Actor模型。如果要构建一个Actor，便只是简单地继承Actor类型并实现其Receive方法即可。在上次文章的末尾，我们使用C#演示了该Actor模型的使用。不过现在我们将尝试一下F#。</summary><published>2009-05-16T09:52:00Z</published><updated>2009-05-16T09:52:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/05/16/a-simple-actor-model-implementation-3.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/05/16/a-simple-actor-model-implementation-3.html"/><content type="text">在上一篇文章中，我们实现了一个简单的Actor模型。如果要构建一个Actor，便只是简单地继承Actor类型并实现其Receive方法即可。在上次文章的末尾，我们使用C#演示了该Actor模型的使用。不过现在我们将尝试一下F#。</content></entry><entry><id>http://www.cnblogs.com/JeffreyZhao/archive/2009/05/14/a-simple-actor-model-implementation-2.html</id><title type="text">ActorLite：一个轻量级Actor模型实现（中）</title><summary type="text">从上一篇文章的反响来看，似乎大家对于这一话题并没有太大兴趣。而这篇文章将会为大家带来一个简单但完整的Actor模型实现。此外，在下一篇文章中……可能会出现一些让您觉得有趣的东西。:)</summary><published>2009-05-14T01:29:00Z</published><updated>2009-05-14T01:29:00Z</updated><author><name>Jeffrey Zhao</name><uri>http://www.cnblogs.com/JeffreyZhao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/05/14/a-simple-actor-model-implementation-2.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/JeffreyZhao/archive/2009/05/14/a-simple-actor-model-implementation-2.html"/><content type="text">从上一篇文章的反响来看，似乎大家对于这一话题并没有太大兴趣。而这篇文章将会为大家带来一个简单但完整的Actor模型实现。此外，在下一篇文章中……可能会出现一些让您觉得有趣的东西。:)</content></entry></feed>
