From f7a18ec4494b9c5c9ef3fd440bbf68ffc6425e18 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期四, 08 十二月 2022 15:40:56 +0800
Subject: [PATCH] 智慧驾培首次提交

---
 lib/src/main/cpp/common/net.cpp |   26 ++++++--------------------
 1 files changed, 6 insertions(+), 20 deletions(-)

diff --git a/lib/src/main/cpp/common/net.cpp b/lib/src/main/cpp/common/net.cpp
index 4923c65..2f6fed0 100644
--- a/lib/src/main/cpp/common/net.cpp
+++ b/lib/src/main/cpp/common/net.cpp
@@ -12,7 +12,7 @@
 #include <sys/select.h>
 #include <arpa/inet.h>
 #include <regex>
-#include <pthread.h>
+#include <thread>
 #include <semaphore.h>
 #include <string>
 
@@ -70,12 +70,7 @@
     m_sIp = ip;
     m_nPort = port;
 
-    pthread_t platform_pid;
-    pthread_attr_t attr;
-    pthread_attr_init(&attr);
-    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);//detached
-    pthread_create(&platform_pid, &attr, TcpConnectThread, this);
-
+    std::thread(TcpConnectThread, this).detach();
     return true;
 }
 
@@ -317,7 +312,7 @@
     return( -1 );
 }
 
-void *CTcpPort::TcpConnectThread(void *p)
+void CTcpPort::TcpConnectThread(void *p)
 {
     CTcpPort *pCTcpPort = (CTcpPort *)p;
 
@@ -325,7 +320,7 @@
 
     if (pCTcpPort->is_domain_name(pCTcpPort->m_sIp.c_str())) {
         if (pCTcpPort->GetHostIP(pCTcpPort->m_sIp.c_str(), net_addr) != 0) {
-            goto CONNECT_END;
+            return;
         }
     } else {
         strcpy(net_addr, pCTcpPort->m_sIp.c_str());
@@ -338,22 +333,15 @@
             pCTcpPort->event_func(0, pCTcpPort, pCTcpPort->event_func_context);
         }
 
-        pthread_t platform_pid;
-        pthread_attr_t attr;
-        pthread_attr_init(&attr);
-        pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);//detached
-        pthread_create(&platform_pid, &attr, TcpListenThread, p);
+        std::thread(TcpListenThread, p).detach();
     } else {
         if (pCTcpPort->event_func != NULL) {
             pCTcpPort->event_func(-1, pCTcpPort, pCTcpPort->event_func_context);
         }
     }
-
-CONNECT_END:
-    pthread_exit(NULL);
 }
 
-void *CTcpPort::TcpListenThread(void *p)
+void CTcpPort::TcpListenThread(void *p)
 {
     int fds_ret;
     struct timeval tv;
@@ -403,8 +391,6 @@
     if (pCTcpPort->event_func) {
         pCTcpPort->event_func(-1, pCTcpPort, pCTcpPort->event_func_context);
     }
-
-    pthread_exit(NULL);
 }
 
 void CTcpPort::set_event_callback(void (*callback)(int, void *, void *), void *context)

--
Gitblit v1.8.0