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/master/comm_if.cpp |   30 +++++++++++++-----------------
 1 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp
index 4bed281..18a4d2f 100644
--- a/lib/src/main/cpp/master/comm_if.cpp
+++ b/lib/src/main/cpp/master/comm_if.cpp
@@ -21,6 +21,8 @@
 #include <iostream>
 #include <vector>
 #include <list>
+#include <thread>
+#include <mutex>
 #include <semaphore.h>
 #include <unistd.h>
 
@@ -94,10 +96,10 @@
 static list<struct msg_2_main_t> MessageBuffer;
 
 static sem_t sem_msg_income;
-static pthread_mutex_t msg_mutex = PTHREAD_MUTEX_INITIALIZER;
+static std::mutex msg_mutex;
 
 static void SendMsgToMainProcIndep(int cmd, const char *value);
-static void *SendMsgToMainProcThread(void *p);
+static void SendMsgToMainProcThread(void);
 
 static void SendMsgToMainProcIndep(int cmd, const char *value)
 {
@@ -111,14 +113,14 @@
         msg.value.clear();
     }
 
-    pthread_mutex_lock(&msg_mutex);
+    lock_guard<mutex> lock(msg_mutex);
+
     MessageBuffer.push_front(msg);
-    pthread_mutex_unlock(&msg_mutex);
 
     sem_post(&sem_msg_income);
 }
 
-static void *SendMsgToMainProcThread(void *p) {
+static void SendMsgToMainProcThread(void) {
     while (true) {
         sem_wait(&sem_msg_income);
 
@@ -126,9 +128,9 @@
             struct msg_2_main_t msg;
             int success;
 
-            pthread_mutex_lock(&msg_mutex);
+            unique_lock<mutex> lock(msg_mutex);
             msg = MessageBuffer.back();
-            pthread_mutex_unlock(&msg_mutex);
+            lock.unlock();
 
             if (msg.value.length() > 0)
                 success = SendMsgToMainProc(msg.cmd, msg.value.c_str());
@@ -136,9 +138,9 @@
                 success = SendMsgToMainProc(msg.cmd, NULL);
 
             if (success == 0) {
-                pthread_mutex_lock(&msg_mutex);
+                lock.lock();
                 MessageBuffer.pop_back();
-                pthread_mutex_unlock(&msg_mutex);
+                lock.unlock();
             } else {
                 // 寤惰繜閲嶅彂
                 DEBUG("鍙戦�佸け璐�");
@@ -154,13 +156,7 @@
     sem_init(&sem_msg_income, 0, 0);
     MessageBuffer.clear();
 
-    pthread_mutex_init(&msg_mutex, NULL);
-
-    pthread_t pid;
-    pthread_attr_t attr;
-    pthread_attr_init(&attr);
-    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-    pthread_create(&pid, &attr, SendMsgToMainProcThread, NULL);
+    std::thread(SendMsgToMainProcThread).detach();
 }
 
 void MA_NdkStart(void)
@@ -2057,7 +2053,7 @@
 {
     switch (cmd) {
         case ID_MS_FILE: {
-            UploadDfuFile(value, length);
+            ////////////////////UploadDfuFile(value, length);
             break;
         }
         default:

--
Gitblit v1.8.0