IronRuby 中的 System.Threading.Tasks.Parallel 错误

发布于 2024-12-06 01:02:10 字数 613 浏览 0 评论 0原文

在 C# 中

class ParallelTest
{
    public static void Main()
    {
        System.Threading.Tasks.Parallel.ForEach(new []{1,2,3,4,5,6,7,8},
                        x => { System.Console.WriteLine(x); }
                    );
    }
}

结果
4
5
6
7
8
2
1
3

但是,在 IronRuby(1.1.3) 中。
有些行为空或丢失换行。

System::Threading::Tasks::Parallel::ForEach([1,2,3,4,5,6,7,8], Proc.new {|x|
    puts x;
})

结果
1734

2

5
6
8

是什么导致了这个问题?
这只是一个错误吗?

In C#

class ParallelTest
{
    public static void Main()
    {
        System.Threading.Tasks.Parallel.ForEach(new []{1,2,3,4,5,6,7,8},
                        x => { System.Console.WriteLine(x); }
                    );
    }
}

Result
4
5
6
7
8
2
1
3

But, in IronRuby(1.1.3).
Some line empty or lose linefeed.

System::Threading::Tasks::Parallel::ForEach([1,2,3,4,5,6,7,8], Proc.new {|x|
    puts x;
})

Result
1734

2

5
6
8

What coused this problem?
Is this just a bug?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不如归去 2024-12-13 01:02:10

看来 IronRuby 的 puts 不是线程安全的。如果您在 IR 中使用 Console.WriteLine(),它可以正常工作:

System::Threading::Tasks::Parallel::ForEach([1,2,3,4,5,6,7,8], Proc.new {|x|
    System::Console::WriteLine(x)
})

It seems IronRuby's puts is not thread-safe. If you use Console.WriteLine() in IR, it works fine:

System::Threading::Tasks::Parallel::ForEach([1,2,3,4,5,6,7,8], Proc.new {|x|
    System::Console::WriteLine(x)
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文