瀏覽代碼

fix multithreading

Julius Pfrommer 10 年之前
父節點
當前提交
834636cf75
共有 1 個文件被更改,包括 4 次插入2 次删除
  1. 4 2
      examples/networklayer_tcp.c

+ 4 - 2
examples/networklayer_tcp.c

@@ -185,12 +185,14 @@ void closeConnection(TCPConnection *handle) {
 	shutdown(handle->sockfd,2);
 	shutdown(handle->sockfd,2);
 	CLOSESOCKET(handle->sockfd);
 	CLOSESOCKET(handle->sockfd);
 
 
+    ServerNetworkLayerTCP *layer = (ServerNetworkLayerTCP*)handle->layer;
+
     // Remove the link later in the main thread
     // Remove the link later in the main thread
     struct deleteLink *d = malloc(sizeof(struct deleteLink));
     struct deleteLink *d = malloc(sizeof(struct deleteLink));
     d->sockfd = handle->sockfd;
     d->sockfd = handle->sockfd;
     while(1) {
     while(1) {
-        d->next = handle->layer->deleteLinkList;
-        if(uatomic_cmpxchg(&handle->layer->deleteLinkList, d->next, d) == d->next)
+        d->next = layer->deleteLinkList;
+        if(uatomic_cmpxchg(&layer->deleteLinkList, d->next, d) == d->next)
             break;
             break;
     }
     }
 }
 }