我现在有一个死循环 线程,线程入口代码,大致如下:
假设此线程,正在运行。 现在我想结束这个线程,并释放系统资源。
我认为需要执行以下3个步骤
m_stopFlag
设置为 RT_TRUE
在下面的代码实例中,我用 waitForThreadOver()
表示等待线程结束。 那么现在我的问题是
我的思路是否正确?
如果正确,请问在 rt-thread
中, 等待线程结束该如何实现呢?因为在API
手册,并没有看到相关函数。
还请大佬指教下。
参考下了官方文档关于线程状态的描述。如下图
我有些新的思考,对于线程处于就绪态
或是 挂起态
, 如果我们直接调用 rt_thread_delete()
不等待线程代码运行结束就干掉线程,会有什么糟糕的影响吗?我的思考是这样:线程正在做一些事情,还没有做完。直接干掉线程,是不是太过冒失。
另外还有一点,线程正常结束时(运行到线程入口的函数的最后一行代码)会自动运行 rt_thread_exit()
函数,我简单看了下其实现,它会将线程从调度器移除,然后执行释放资源的代码。如此看来,线程正常结束,似乎没有必要执行 rt_thread_delete()
你好,我昨天重新看了一下文档,有些新的思考,重新编辑了下问题,您看可否回答下。
对于这一点来说,只是局部变量的话不会有任何的影响,但对于一些全局变量,是需要做一定的判断的,例如一些Malloc内存的释放,其实重点在于你使用了什么,不然不好说会造成什么影响的,什么影响都有可能造成,当然也可能一点影响都没有