- A question on hythread_resume()
     - Line 318:   " if (thread->safepoint_callback &&
     thread->suspend_request < 2) return"


   - is there ever the situation where "thread->suspend_request == 0 "
        ??
     -
     - is there a race condition in the use of
     "thread->suspend_request" in lines 318, 319, 320?
        - In specific, does it make sense to replace these lines
        of code with something like:



       int current_suspend_request_count;

       while (1) {

           current_suspend_request_count = thread->suspend_request;

if (thread->safepoint_callback && current_suspend_request_count < 2) return;

       int status = apr_atomic_casptr (current_suspend_request_count,
current_suspend_request--, ((apr_uint32_t *)&(thread->suspend_request);

       if(/*original thread->suspend_request*/ status == 1) {  /* thus the
new value has to be zero

           // Notify the thread that it may wake up now

           hysem_post(thread->resume_event);

           TRACE(("TM: resume one thread: %p request count: %d",thread ,
thread->suspend_request));

           thread->state &= ~TM_THREAD_STATE_SUSPENDED;

           break;


--
Weldon Washburn
Intel Enterprise Solutions Software Division

Reply via email to