[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] Locking in pm_thread_unblock



Welchen Sinn exakt hat die folgende Konstruktion (aus pm_thread_unblock in 
kernel2) in Bezug auf das Locking? Sollte da das lock() in dem if nicht immer 
blockieren, weil ja genau dasselbe schon davor gelockt wurde?

    lock(&thread->lock);

    // Der Thread wird nur entsperrt, wenn er auch wirklich blockiert ist
    if (thread->status == PM_STATUS_BLOCKED) {
        lock(&thread->lock);
        unlock(&thread->lock);
        return TRUE;
    }

    unlock(&thread->lock);

Andererseits habe ich ihn an dieser Stelle auch noch nicht hängen sehen. 
Vielleicht verstehe ich grad nur nicht, wozu das gut ist.

Kevin