lkml.org 
[lkml]   [2005]   [Aug]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: sched_yield() makes OpenLDAP slow
    From
    Date
    On Sat, 2005-08-20 at 11:38 -0700, Howard Chu wrote:
    > But I also found that I needed to add a new
    > yield(), to work around yet another unexpected issue on this system -
    > we have a number of threads waiting on a condition variable, and the
    > thread holding the mutex signals the var, unlocks the mutex, and then
    > immediately relocks it. The expectation here is that upon unlocking
    > the mutex, the calling thread would block while some waiting thread
    > (that just got signaled) would get to run. In fact what happened is
    > that the calling thread unlocked and relocked the mutex without
    > allowing any of the waiting threads to run. In this case the only
    > solution was to insert a yield() after the mutex_unlock().

    That's exactly the behavior I would expect. Why would you expect
    unlocking a mutex to cause a reschedule, if the calling thread still has
    timeslice left?

    Lee

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-08-20 22:59    [W:2.834 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site