Explorar el Código

update: demo/socket/tcp_uart_huge实例由于task的msgQueue累积导致内存爆满,添加队列清除和减少等待时间

https://gitee.com/openLuat/LuatOS/issues/I86DGP

后续还需要改成异步的版本
Wendal Chen hace 2 años
padre
commit
7132c67083
Se han modificado 1 ficheros con 7 adiciones y 5 borrados
  1. 7 5
      demo/socket/tcp_uart_huge/main.lua

+ 7 - 5
demo/socket/tcp_uart_huge/main.lua

@@ -133,8 +133,8 @@ local function sockettest()
             --sys_send(taskName, socket.EVENT, 0)
         elseif tp == "uplink" then
             -- 上行数据, 主动上报的数据,那就发送呀
-            table.insert(txqueue, data)
-            sys_send(taskName, socket.EVENT, 0)
+            -- table.insert(txqueue, data)
+            -- sys_send(taskName, socket.EVENT, 0)
         elseif tp == "downlink" then
             -- 下行数据,接收的数据, 从ipv6task来的
             -- 其他代码可以通过 sys.publish()
@@ -176,7 +176,7 @@ function sockettask(d1Name, txqueue, rxtopic)
 				break
 			end
             -- 如果服务器有下发数据, used()就必然大于0, 进行处理
-			if rx_buff:used() > 0 then
+			while rx_buff:used() > 0 do
 				log.info("socket", "收到服务器数据,长度", rx_buff:used())
                 data_counter = data_counter + rx_buff:used()
                 -- local data = rx_buff:query() -- 获取数据
@@ -188,11 +188,13 @@ function sockettask(d1Name, txqueue, rxtopic)
                     -- sys.wait(10) -- 再等10ms
                 end
 				rx_buff:del()
+                sysplus.cleanMsg(d1Name)
+                socket.rx(netc, rx_buff)
 			end
             -- log.info("libnet", "调用wait开始等待消息")
             -- 等待事件, 例如: 服务器下发数据, 有数据准备上报, 服务器断开连接
-			result, param, param2 = libnet.wait(d1Name, 15000, netc)
-            log.info("libnet", "wait", result, param, param2)
+			result, param, param2 = libnet.wait(d1Name, 500, netc)
+            -- log.info("libnet", "wait", result, param, param2)
 			if not result then
                 -- 网络异常了, 那就断开了, 执行清理工作
 				log.info("socket", "服务器断开了", result, param)