我猜测你遇到肯定是第一种情形,即:
void thread_entry(void* paramenter)
{
while (1)
{
/* 等待事件的发生 */
/* 对事件进行服务、进行处理 */
}
}
如果是这种情况,那么你想要退出线程的执行,你可以在while(1)中的1里做文章,比如使用一个bool变量代替这个1,类似这样:
rt_bool thread_running = true;
void thread_entry(void* paramenter)
{
while (thread_running)
{
/* 等待事件的发生 */
/* 对事件进行服务、进行处理 */
}
}
然后你可以使用MSH_CMD_EXPORT导出一个命令,这个命令,只需要把thread_running = false即可。
这种做法,很多Java代码就是这么玩的。
当然这里有个前提是,你的线程的执行代码没有在一些阻塞接口上死等,比如等待互斥锁或者信号量这种就不行;还是有它的局限性。
仅做为一种思路参考,希望对你有所启发。
我猜测你遇到肯定是第一种情形,即:
void thread_entry(void* paramenter)
{
while (1)
{
/* 等待事件的发生 */
/* 对事件进行服务、进行处理 */
}
}
如果是这种情况,那么你想要退出线程的执行,你可以在while(1)中的1里做文章,比如使用一个bool变量代替这个1,类似这样:
rt_bool thread_running = true;
void thread_entry(void* paramenter)
{
while (thread_running)
{
/* 等待事件的发生 */
/* 对事件进行服务、进行处理 */
}
}
然后你可以使用MSH_CMD_EXPORT导出一个命令,这个命令,只需要把thread_running = false即可。
这种做法,很多Java代码就是这么玩的。
当然这里有个前提是,你的线程的执行代码没有在一些阻塞接口上死等,比如等待互斥锁或者信号量这种就不行;还是有它的局限性。
仅做为一种思路参考,希望对你有所启发。
举报