Exemplo n.º 1
0
/* terminate a thread gracefully.
 */
rsRetVal thrdTerminate(thrdInfo_t *pThis)
{
	DEFiRet;
	assert(pThis != NULL);

	if(pThis->bNeedsCancel) {
		DBGPRINTF("request term via canceling for input thread 0x%x\n", (unsigned) pThis->thrdID);
		pthread_cancel(pThis->thrdID);
	} else {
		thrdTerminateNonCancel(pThis);
	}
	pthread_join(pThis->thrdID, NULL); /* wait for input thread to complete */

	RETiRet;
}
Exemplo n.º 2
0
/* terminate a thread gracefully.
 */
rsRetVal thrdTerminate(thrdInfo_t *pThis)
{
    DEFiRet;
    assert(pThis != NULL);

    if(pThis->bNeedsCancel) {
        DBGPRINTF("request term via canceling for input thread 0x%x\n", (unsigned) pThis->thrdID);
        pthread_cancel(pThis->thrdID);
        pThis->bIsActive = 0;
    } else {
        thrdTerminateNonCancel(pThis);
    }
    pthread_join(pThis->thrdID, NULL); /* wait for input thread to complete */

    /* call cleanup function, if any */
    if(pThis->pAfterRun != NULL)
        pThis->pAfterRun(pThis);

    RETiRet;
}