19

我有一个大量使用尾递归(用 F# 编程)的 .NET 4.0 应用程序。它在 .NET VM 上运行良好,但在 Mono-3.0.1 上用完堆栈。

我试过跑步,mono --optimize=tailc但这似乎并没有改变任何东西。

有没有办法强制单声道消除尾音?有没有办法增加单声道的最大堆栈大小?

4

1 回答 1

1

最近有一个非常相似的问题,提供了有用的答案:Stack size under Mono

正如 Robert Harvey 在评论中已经指出的那样,Mono 已经破坏/不完整的 F# 尾调用支持(错误 476785:F# 中的尾调用支持)。此问题的修复在 Mono 的运行时正在进行的项目列表中

堆栈大小可以使用System.Threading.Thread构造函数或在 PE 标头中增加。但是,这种System.Threading.Thread方式在 Mono 中不起作用。要更改 PE,您可能需要 MS Visual Studio,因为它可能没有其他选择editbin.exe /stack

于 2013-11-14T22:51:13.423 回答