我写了两个小脚本,
第一个维护一组证券的当前股票价格字典。我正在使用递归来侦听命名管道。只要名称管道上有可用的东西,它就会更新安全价格并立即返回并开始收听管道。
第二个定期从第一个程序的价格缓存中读取某些证券的股票价格并进行计算。
但我不知道如何让这两个程序进行通信。我不知何故需要让我的第二个程序启动第一个程序并让它在后台运行并在需要时获得价格。
有人能指出我正确的方向吗?
谢谢你, -Sudaly
答案 0 :(得分:3)
他们必须是独立的程序/脚本吗?
如果没有,我会把它们放在同一个程序中,并使用async / agents来运行这两个任务。
这是该策略的入门博客:
基本上一个代理只是坐在循环中:从管道读取异步,更新价格
另一个代理人坐在一个循环中:睡一段时间,读取价格并进行计算。或者,这可能只是同步“主程序”循环。
(根据数据结构,您可能需要或可能不需要协调处理一个代理阅读而另一个正在更新。)
实际上,您甚至不需要代理,只能在后台运行异步。像
这样的东西// first script
let mutable lastPrice = 0.0
async {
while true do
let! nextval = namedPipe.AsyncRead()
lastPrice <- nextVal
} |> Async.Start
// second script
while true do
System.Threading.Thread.Sleep(1000)
printfn "%f" (calc lastPrice)
如果有帮助的话。
答案 1 :(得分:2)
有很多方法。