萬盛學電腦網

 萬盛學電腦網 >> 圖文處理 >> Flash教程 >> 利用F#在Silverlight中實現並行編程

利用F#在Silverlight中實現並行編程

隨著.NET 4的發布,要在.NET平台之上進行並行編程可謂是易如反掌。實際上,微軟為大家提供了三種並行編程的基礎功能。第一種是提供給C++使用的並發運行時 (Concurrency Runtime);第二種是藉由.NET平台提供給托管語言的一組並行編程函數庫(包括TPL、PLINQ和並行編程數據結構等);最後一種就是基於F# 本身的並行編程特性。

  然而,由於考慮精簡的緣故,當前的CoreCLR並未包含.NET 4中的並行函數庫,從而在Silverlight(即使最新的Silverlight 4)中也無法直接獲得並行編程的能力。但是,大家不用氣餒,我們還可以在Silverlight中利用F#來實現並行編程。

  Bart Czernicki在其博文《Silverlight 3 and F# Support in Visual Studio 2010》中詳細講述了這種方式。在這篇博文中,Bart給出利用F#進行並行編程的具體步驟,相應的示例代碼,以及對性能的討論;還表達了一個非常有意思的觀點:

  並發編程是Silverlight超越其他RIA技術的最大特性。

  Bart也提到,使用F#來在Silverlight中輔助進行並行編程的好處:

  不用顯式地啟動、停止線程(比如調用Thread.Start)

  不需使用BackgroundWorker

  不需使用回調(AsyncCallBack)

  無需遵循BeginExecute這樣的異步模式

  當然,通過F#來在Silverlight中實現並行編程,還是有諸多的不足:

  不能利用PLINQ

  如果你的代碼主要由C#、VB寫成,那麼只能用F#編寫一個包裝器,來變相地實現並行

  目前這種方式只能在Silverlight 3上使用,這是由於F# runtime for Silverlight只發布了Silverlight 3的版本,而Silverlight 4版本的F#運行時要在Silverlight 4 Tools for VS2010正式發布的時候才會提供。

  對於上面的最後一點,Gaston Hillar的博文《Silverlight 4 RC Stays With the Old .NET Threads; F# Helps》也有所提及。

  無論如何,雖然我們現在可以變通地在Silverlight中進行並行編程,但還是希望微軟能在未來的Silverlight版本中提供直接的並行編程功能

 

copyright © 萬盛學電腦網 all rights reserved