是否可以让VM实例同时执行HiPE代码和通常的"基于操作码"的对象?
这个问题与以下相关:Erlang OTP版本与HiPE编译?
使用F#中的原始套接字编写异步Ping,以使用尽可能少的线程启用并行请求.不使用"System.Net.NetworkInformation.Ping",因为它似乎为每个请求分配一个线程.我也对使用F#异步工作流感兴趣.
当目标主机不存在/响应时,下面的同步版本会正确超时,但异步版本会挂起.当主机做出响应时,两者都有效.不确定这是.NET问题还是F#问题......
有任何想法吗?
(注意:进程必须以Admin身份运行才能允许Raw Socket访问)
这会引发超时:
let result = Ping.Ping ( IPAddress.Parse( "192.168.33.22" ), 1000 )
Run Code Online (Sandbox Code Playgroud)
但是,这挂起:
let result = Ping.AsyncPing ( IPAddress.Parse( "192.168.33.22" ), 1000 )
|> Async.RunSynchronously
Run Code Online (Sandbox Code Playgroud)
这是代码......
module Ping
open System
open System.Net
open System.Net.Sockets
open System.Threading
//---- ICMP Packet Classes
type IcmpMessage (t : byte) =
let mutable m_type = t
let mutable m_code = 0uy
let mutable m_checksum = 0us
member this.Type
with get() = m_type
member this.Code
with get() = m_code
member this.Checksum = …Run Code Online (Sandbox Code Playgroud) 对我来说,我认为F#是一个糟糕的选择,因为它在幕后使用线程.对我而言,由于上下文切换等问题,线程太"重".
我可以看到为什么Erlang是一个很好的选择,因为它使用轻量级的过程.
我错了吗?