我写了一个简单的asp.net websocket处理程序作为远程数据处理服务器和客户端之间的网关.我在我的本地机器(win8,IIS EXPRESS 8)中进行了测试,一切运行良好.但是在azure网站上,ASP.NET在将所有websocket数据发送到客户端之前关闭了连接.
以下是我的数据传输代码:
internal class WebSocketStreamTransfer{
public WebSocketStreamTransfer(CancellationToken disconnectionToken){
DisconnectionToken = disconnectionToken;
}
private CancellationToken DisconnectionToken{
get;
set;
}
public async Task AcceptWebSocketConnection(WebSocketContext context) {
if (context == null)
throw new ArgumentNullException("context");
WebSocket websocket = context.WebSocket;
if (websocket == null)
throw new SocksOverHttpException("Null websocket");
using(IConnection conn = ConnectionManagerFactory.ConnectionManager.CreateConnection(Guid.NewGuid().ToString())) {
try {
DisconnectionToken.Register(conn.Close);
TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(null);
await Task.WhenAny(SendDataToRemoteServer(conn, websocket, DisconnectionToken, tcs), SendDataToClient(conn, websocket, DisconnectionToken, tcs.Task));
} catch(Exception e) {
Logger.LogException(e);
}
}
}
internal static async Task …Run Code Online (Sandbox Code Playgroud) 简单的C代码,只需添加一个双精度。
void test(double *a, double *b, long n) {
for (long j = 0; j < n; j++)
for (long i = 0; i < n; i++) {
b[i] = b[i] + a[j];
}
}
Run Code Online (Sandbox Code Playgroud)
在编译器资源管理器中获取ASM结果:https : //godbolt.org/z/tJ-d39
有一addpd和二addsd。两者都是与双精度有关的。
另一个类似的锈代码,获得了更多的双精度添加工具:https://godbolt.org/z/c49Wuh
pub unsafe fn test(a: &mut [f64], b: &mut [f64], n: usize) {
for j in 0..n {
for i in 0..n {
*b.get_unchecked_mut(i) = *b.get_unchecked_mut(i) + *a.get_unchecked_mut(j);
}
}
}
Run Code Online (Sandbox Code Playgroud)