未验证 提交 65b7f438 编写于 作者: B Bernard Xiong 提交者: GitHub

Merge pull request #2329 from RT-Thread/fix_pthread

[ptherad] Fix pthread_exit issue
...@@ -346,12 +346,6 @@ void pthread_exit(void *value) ...@@ -346,12 +346,6 @@ void pthread_exit(void *value)
ptd->tls = RT_NULL; ptd->tls = RT_NULL;
} }
if (ptd->attr.detachstate == PTHREAD_CREATE_JOINABLE)
{
/* release the joinable pthread */
rt_sem_release(ptd->joinable_sem);
}
/* detach thread */ /* detach thread */
rt_thread_detach(ptd->tid); rt_thread_detach(ptd->tid);
/* reschedule thread */ /* reschedule thread */
......
...@@ -347,17 +347,17 @@ rt_err_t rt_thread_detach(rt_thread_t thread) ...@@ -347,17 +347,17 @@ rt_err_t rt_thread_detach(rt_thread_t thread)
/* change stat */ /* change stat */
thread->stat = RT_THREAD_CLOSE; thread->stat = RT_THREAD_CLOSE;
/* detach object */ if ((rt_object_is_systemobject((rt_object_t)thread) == RT_TRUE) &&
rt_object_detach((rt_object_t)thread); thread->cleanup == RT_NULL)
{
if (thread->cleanup != RT_NULL) rt_object_detach((rt_object_t)thread);
}
else
{ {
/* disable interrupt */ /* disable interrupt */
lock = rt_hw_interrupt_disable(); lock = rt_hw_interrupt_disable();
/* insert to defunct thread list */ /* insert to defunct thread list */
rt_list_insert_after(&rt_thread_defunct, &(thread->tlist)); rt_list_insert_after(&rt_thread_defunct, &(thread->tlist));
/* enable interrupt */ /* enable interrupt */
rt_hw_interrupt_enable(lock); rt_hw_interrupt_enable(lock);
} }
...@@ -366,7 +366,6 @@ rt_err_t rt_thread_detach(rt_thread_t thread) ...@@ -366,7 +366,6 @@ rt_err_t rt_thread_detach(rt_thread_t thread)
} }
RTM_EXPORT(rt_thread_detach); RTM_EXPORT(rt_thread_detach);
#ifdef RT_USING_HEAP #ifdef RT_USING_HEAP
/** /**
* This function will create a thread object and allocate thread object memory * This function will create a thread object and allocate thread object memory
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册