You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Henry Jen <he...@ztune.net> on 2006/12/22 21:51:08 UTC

Adding a cleanup fucntion for thread pool task

Hi,

Happy holiday to all. :-)

With the thread pool support patch[1] sit in bugzilla, recently I found 
it needs to have a cleanup function for the task pushed/scheduled. Also, 
it would be useful for a worker thread being able to get the owner.

So I would like to propose a change and an addition,

Addition:

/**
  * Get owner of the task currently been executed by the thread.
  * @param thd The thread is executing a task
  * @param owner Pointer to receive owner of the task.
  * @return APR_SUCCESS if the owner is retrieved successfully
  */
APR_DECLARE(apr_status_t) apr_thread_pool_task_owner_get(apr_thread_t * 
thd, void **owner);

Change:

APR_DECLARE(apr_status_t) apr_thread_pool_push(apr_thread_pool_t * me,
                                                apr_thread_start_t func,
                                                void *param,
                                                apr_byte_t priority,
                                                void *owner);

to either

APR_DECLARE(apr_status_t) apr_thread_pool_push(apr_thread_pool_t * me,
                               apr_thread_start_t func,
                               void *param,
                               apr_byte_t priority,
                               void *owner,
                               apr_status_t (*cleanup) (void*));

or

APR_DECLARE(apr_status_t) apr_thread_pool_push(apr_thread_pool_t * me,
                               apr_thread_start_t func,
                               void *param,
                               void *owner,
                               ...);
Where ... would be optional parameters provided as

apr_byte_t priority, apr_status_t (*cleanup) (void*)


The later maybe a good for potential parameters, but I don't see the 
need for now.

Comments?

[1] http://issues.apache.org/bugzilla/show_bug.cgi?id=41061

Cheers,
Henry