gpt4 book ai didi

c# - 延续:我可以在 F# 异步工作流或 C# 异步函数中序列化延续吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:44 29 4
gpt4 key购买 nike

我想要一个可序列化的延续,这样我就可以在等待新事件的同时将异步工作流程 pickle 到磁盘。当异步工作流等待 let! 时,它将与唤醒它所需的记录一起保存。而不是内存中的任意 IAsyncResult s (或 Task<T> 等),例如,它必须是传入消息以及延续本身的过滤条件。如果没有对延续的语言支持,这可能是一项壮举。但是通过计算表达式来处理显式 CPS 转换,它可能不会太棘手,甚至可能更高效。有没有人解决过这样的方法?

最佳答案

您可能会使用 MailboxProcessorAgent,键入接近您想要的内容的方法。然后你可以使用 agent.PostAndAsyncReply超时以检索当前 AgentState。如上所述,您需要使传递的对象可序列化,但即使委托(delegate)也是可序列化的。不过,内部结构实际上与 async 计算无关。 async 计算仅允许您以非阻塞方式与程序中的各种代理进行交互。

Dave Thomas我一直在研究一个名为 fracture-io 的图书馆这将为与代理合作提供一些开箱即用的场景。我们还没有讨论过这个确切的场景,但我们可能会考虑将其纳入……或进行提交。 :)

我还注意到您用 callcc 标记了您的问题。我将该运算符(operator)的示例发布到 fssnip , 但 Tomas Petricek 很快 posted an example打破 async 计算是多么容易。所以我不认为 callcc 是这个问题的有用解决方案。如果不需要async,可以看FSharpx对于 Continuation 模块和其中的 callcc 运算符。

关于c# - 延续:我可以在 F# 异步工作流或 C# 异步函数中序列化延续吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6839575/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com