Nguyen Nguyen wrote:
> I have seen something similar before.  Our fix was to use
> pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED)
> so child threads wouldn't inherit attribute from parent.

> On 9/11/07, Ilya Lipovsky <[EMAIL PROTECTED]> wrote:
> 
>       Hmm. Just for kicks - inside the important thread could you add:
<snip>
>       printf("important's policy is %d and priority is %d\n",
curpolicy,
<snip>
>       Do similar for the unimportant thread, and see if you
> get anything weird -
>       e.g. priorities come out to be the same for threads.


Thank you both!  You were each correct, and your input has been greatly
appreciated.

Adding the printf() resulted in:
unimportant's policy is 0 and priority is 0
unimportant waiting for futex
important's policy is 0 and priority is 0
important waiting for futex
main's policy is 0 and priority is 0
futex FUTEX_WAKE
unimportant's policy is 0 and priority is 0
unimportant got futex!
important's policy is 0 and priority is 0
important got futex!

Adding the PTHREAD_EXPLICIT_SCHED resulted in:
unimportant's policy is 1 and priority is 1
unimportant waiting for futex
important's policy is 1 and priority is 99
important waiting for futex
main's policy is 0 and priority is 0
futex FUTEX_WAKE
important's policy is 1 and priority is 99
important got futex!
unimportant's policy is 1 and priority is 1
unimportant got futex!

Verifying with pthread_muxtex / glibc 2.3.6:
unimportant's policy is 1 and priority is 1
unimportant waiting for mutex
important's policy is 1 and priority is 99
important waiting for mutex
main's policy is 0 and priority is 0
main unlocking mutex
important's policy is 1 and priority is 99
important got mutex!
unimportant's policy is 1 and priority is 1
unimportant got mutex!

And, to come full circle, regression on 2.6.21 resulted in:
unimportant's policy is 1 and priority is 1
unimportant waiting for futex
important's policy is 1 and priority is 99
important waiting for futex
main's policy is 0 and priority is 0
futex FUTEX_WAKE
unimportant's policy is 1 and priority is 1
unimportant got futex!
important's policy is 1 and priority is 99
important got futex!

Now it is time to audit my other code and make sure to add
PTHREAD_EXPLICIT_SCHED where appropriate.  Thank you.
        -Michael

_______________________________________________
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded

Reply via email to