sleep is not working to avoid starvation among threads of same priority

Jille Timmermans jille at quis.cx
Tue Oct 7 12:20:07 UTC 2008


Hello,

Take a look at pthread_yield():

DESCRIPTION
     The pthread_yield() forces the running thread to relinquish the 
processor
     until it again becomes the head of its thread list.

(Note that it is not portable)

And if you want to use sleep, I found out that using sleep with more ms 
does 'yield' the thread/process.
iirc, 20ms was enough to stop it from using 100% CPU.

-- Jille

Ramachandran Sathyanarayanan wrote:
> Hi
>
>  I hope this is the right mailer for this question. pls let us know your inputs on this.
>
> Thanks
>
> Ram
>
> ________________________________
> From: Rajeshwar Patil
> Sent: Tuesday, October 07, 2008 3:36 PM
> To: freebsd-questions at freebsd.org
> Cc: Ramachandran Sathyanarayanan; Rajeshwar Patil
> Subject: sleep is not working to avoid starvation among threads of same priority
>
> Hi,
>
> I have two threads of same priority lets say thread A and thread B, thread A is starving since thread B has got a for loop of size 100k. So, to avoid starvation I am processing 1000 iterations of for loop(that of thread B) in one batch and giving sleep of 1ms, but still thread A is starving. If I increase the batch size used in for loop from 1k to 10k then starvation of thread A is little less whereas it should be more as Im increasing processing time of thread B. I tried various combinations of sleeps and batches, but I couldnt solve the starvation of thread A.
>
> Is the sleep right solution?
>
> I will be grateful if someone could answer on this.
>
> Thanks
> Rajeshwar
>
>
>
>
>
>
> ________________________________
> "DISCLAIMER: This message is proprietary to Aricent and is intended solely for the use of the individual to whom it is addressed. It may contain privileged or confidential information and should not be circulated or used for any purpose other than for what it is intended. If you have received this message in error,please notify the originator immediately. If you are not the intended recipient, you are notified that you are strictly prohibited from using, copying, altering, or disclosing the contents of this message. Aricent accepts no responsibility for loss or damage arising from the use of the information transmitted by this email including damage from virus."
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>   


More information about the freebsd-hackers mailing list