我需要创建UDP连接,通过它我可以同时写入和读取数据包.(使用不同的goroutine和GOMAXPROCS(n),其中n> 1)首次尝试是这样的:
func new_conn(port, chan_buf int) (conn *net.UDPConn, inbound chan Packet, err error) {
inbound = make(chan Packet, chan_buf)
conn, err = net.ListenUDP("udp4", &net.UDPAddr{Port: port})
if err != nil {return}
go func () {
for {
b := make([]byte, UDP_PACKET_SIZE)
n, addr, err := conn.ReadFromUDP(b)
if err != nil {
log.Printf("Error: UDP read error: %v", err)
continue
}
inbound <- Packet{addr, b[:n]}
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以要读取数据包,我使用了packet:= < - inbound并写入conn.WriteTo(data_bytes,remote_addr).但是竞争检测器会在连接上同时读/写时发出警告.所以我重写了这样的代码:
func new_conn(port, chan_buf int) (inbound, …Run Code Online (Sandbox Code Playgroud) 我对以下内在函数/指令的性能感兴趣:
_mm256_andnot_si256 / vpandn_mm256_and_si256 / vpand_mm256_cmpgt_epi32 / vpcmpgtd但是不幸的是,《英特尔Intrinsics指南》没有包含具有这些内在/指令的延迟和吞吐量数字的表。在哪里可以找到此信息?