主题中讨论的其他器件:CC3220SF、 CC3200
工具/软件:Code Composer Studio
大家好、
客户有以下问题:
"我在调试器中的变体 TI 工具链+ TI-RTOS 中运行了来自 TI 的示例 TCP-Echo。
在此示例中、为每个已接受的客户端请求启动新线程、然后在该线程中与相应的客户端进行通信。
根据程序代码、如果 recv 返回错误或0、则线程终止。
在我的测试中、我启动了一个客户端、使用 CTRL-C 中止了它、重新启动了它、等等。 一次只有一个客户端处于活动状态。
客户程序:
- TI PythonScript
-呼叫:
Python tcpSendReceive.py 192.168.178.30 1000测试-s1000 -n10
-终止 CTRL-C
第三次连接尝试已在此处失败。 该模块随后不再处于网络中(路由器会列出 WiFi 用户)。
运行时对象查看器还显示实际完成的线程。 它们具有优先级3、现在为-1、并且仍然占用内存/堆栈。 这不可避免地意味着随着客户端和/或登录数量的增加、系统内存不足。
如果创建了更多的线程、则它们的堆栈指针始终高于之前已经完成的进程。
是否可以再次释放这个"死区"RAM 区域? 或者、已完成线程的堆栈内存是否为系统"空闲"、是否按需提供?
因此、我的问题是:如何从系统中获取已完成的线程?
tcpWorker 线程末尾的 pthread_exit 不起作用。"
谢谢、
Franz
