harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Weldon Washburn" <weldon...@gmail.com>
Subject [drlvm][threading] -- some questions on thread_native_suspend.c::hythread_resume()
Date Tue, 12 Dec 2006 17:49:48 GMT
   - 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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message