NCindy

.net平台上的高性能网络程序开发框架

其它并发方法

原文链接

CCR可以表达(当需要的时候通过简单的助手方法)各种其它的并发方法,例如:

  1. .net中的异步编程模型(APM):MSDN杂志中的Concurrent Affairs文章有一些用CCR适配器助手和APM APIs来调用系统类库的例子。与非CCR代码互操作章节有一些使用CCR和它的迭带器支持来简化APM例子,这些例子通过直接返回并继续异步I/O, 可以不使用delegate和回调。
  2. Futures:Futures被表达为立即从一个类中返回一个port,并且并行的激活处理函数。使用一个dispatcher queue来并行的执行调用者和被调用的代码,然后一个操作系统事件会阻塞一个等待结果的公共方法(假定一个同步未来模式(assuming a synchronous future pattern),看不懂,再汗一个-_-!!!)。为了调度未来工作项(future work items),CCR调度器设计自然的在适当的时候充分利用CPU处理能力来执行高效计划,使用用户定义的策略来进行速度控制和负载均衡。分发队列是FIFO对,但是DispatcherQueue的实现暴露了一组虚方法,允许继承类来实现LIFO,随机插入等等。
  3. Promises:Promises被表达的与Futures非常相似:一个CCR Port是一个Promise的结果,而一个破坏Promise的错误,是一个可以从port中获取的元素。
  4. 连接(joins):连接编程在操作系统中出现已经有很长时间了(WaitForMultiple, I/O Completion ports in NT, etc),CCR更加用动态连接和多元素接收器对连接进行了扩展。
  5. 传统的线程原语,例如读写锁、锁和监控器(monitors):CCR可以通过port和仲裁器来表达线程同步原语,并且取代显式的对共享内存的锁定。问题就从保护共享内存变成了调度和协议设计。

posted on 2007-12-18 10:36  iceboundrock  阅读(568)  评论(0编辑  收藏  举报

导航