相关疑难解决方法(0)

Erlang编译:混合了"HiPE目标代码"和"操作码"?

是否可以让VM实例同时执行HiPE代码和通常的"基于操作码"的对象?

这个问题与以下相关:Erlang OTP版本与HiPE编译?

erlang hipe

4
推荐指数
1
解决办法
531
查看次数

如何在使用异步Socket.BeginReceive时检测超时?

使用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)

.net sockets f# asynchronous raw-sockets

4
推荐指数
1
解决办法
2877
查看次数

F#是功能语言的不良选择

对我来说,我认为F#是一个糟糕的选择,因为它在幕后使用线程.对我而言,由于上下文切换等问题,线程太"重".

我可以看到为什么Erlang是一个很好的选择,因为它使用轻量级的过程.

我错了吗?

erlang f# multithreading

1
推荐指数
3
解决办法
3830
查看次数

标签 统计

erlang ×2

f# ×2

.net ×1

asynchronous ×1

hipe ×1

multithreading ×1

raw-sockets ×1

sockets ×1