我有一个.NET 4.0应用程序,它大量使用尾递归(用F#编程)。它在.NET VM上运行良好,但它在Mono-3.0.1上没有堆栈。
我尝试使用mono --optimize=tailc
运行,但这似乎没有改变任何东西。
有没有办法强制单声道消除尾部通话? 有没有办法增加单声道的最大堆栈大小?
答案 0 :(得分:1)
最近有一个非常类似的问题和有用的答案:Stack size under Mono
正如罗伯特哈维已经在评论中指出的那样,Mono已经打破/不完整的尾部呼叫支持F#(bug 476785: Tail call support in F#)。问题的解决方法是on Mono's runtime ongoing projects list。
可以使用System.Threading.Thread
构造函数或PE头中增加堆栈大小。但System.Threading.Thread
方式does not work in Mono。要更改PE,您可能会need MS Visual Studio,因为editbin.exe /stack
可能无法替代。