I am not too convinced about the throttling decision. OK NBHM technically remains a NB but the thread is doing something
which would be collected later on without being used.
I would prefer blocking(spinning cause it is shot time) the thread till the array gets created because in this case atleast the thread is not creating nuisance.
This would make NBHM blocking(technically only) but only when the thread has nothing better to do. Concurrency wouldn't suffer and there would be an overall improvement.
Who wants the Non blocking bragging rights. It needs to be non blocking when it matters.
regards
Mohit
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Sorry, it's the Other Way Around. Spinning is death - if 20 threads are spinning on an 8-cpu x86, then NOBODY MAKES PROGRESS. Live-lock. Concurrency suffers and there is an obvious overall DE-provement. Seen it happen on both X86's and on big azul gear.
It's exactly in this situation where the non-blocking property is key: when you have a bunch of runnable threads then obstruction-free algorithms suffer; threads can always obstruct each other leading to live-lock.
Cliff
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi cliff,
I have an observation to make.
I am not too convinced about the throttling decision. OK NBHM technically remains a NB but the thread is doing something
which would be collected later on without being used.
I would prefer blocking(spinning cause it is shot time) the thread till the array gets created because in this case atleast the thread is not creating nuisance.
This would make NBHM blocking(technically only) but only when the thread has nothing better to do. Concurrency wouldn't suffer and there would be an overall improvement.
Who wants the Non blocking bragging rights. It needs to be non blocking when it matters.
regards
Mohit
Sorry, it's the Other Way Around. Spinning is death - if 20 threads are spinning on an 8-cpu x86, then NOBODY MAKES PROGRESS. Live-lock. Concurrency suffers and there is an obvious overall DE-provement. Seen it happen on both X86's and on big azul gear.
It's exactly in this situation where the non-blocking property is key: when you have a bunch of runnable threads then obstruction-free algorithms suffer; threads can always obstruct each other leading to live-lock.
Cliff