小编mik*_*dld的帖子

Mono下的F#任务并行不会"出现"并行执行

我有以下虚拟代码来测试F#中的TPL.(Mono 4.5,Xamarin工作室,四核MacBook Pro)

令我惊讶的是,所有进程都在同一个线程上完成.根本就没有并行性.

open System
open System.Threading
open System.Threading.Tasks


let doWork (num:int) (taskId:int) : unit =
    for i in 1 .. num do
        Thread.Sleep(10)
        for j in 1 .. 1000 do
            ()
        Console.WriteLine(String.Format("Task {0} loop: {1}, thread id {2}", taskId, i, Thread.CurrentThread.ManagedThreadId)) 

[<EntryPoint>]
let main argv = 

    let t2 = Task.Factory.StartNew(fun() -> doWork 10 2)
    //printfn "launched t2"
    Console.WriteLine("launched t2")
    let t1 = Task.Factory.StartNew(fun() -> doWork 8 1)
    Console.WriteLine("launched t1")
    let t3 = Task.Factory.StartNew(fun() -> doWork 10 3)
    Console.WriteLine("launched …
Run Code Online (Sandbox Code Playgroud)

mono f# asynchronous task-parallel-library

4
推荐指数
2
解决办法
288
查看次数

4
推荐指数
1
解决办法
2330
查看次数

标签 统计

asynchronous ×1

f# ×1

html5 ×1

mono ×1

task-parallel-library ×1