>>Well, apparently we don't use sched_yield, so the problem must
>>> lie somewhere else. Maybe Con can help us out here? Alexandre says he
>>> doesn't know what the issue is either and somebody needs to investigate. I
>>> guess we do need to concern ourselves over the details :)
>
>
> Interesting. Probably the most valuable information is that it seems to
> work fine if we artificially limit the threads to exactly the same
> timeslice _or_ we put them at such a low priority that they are forced
> to be guaranteed to round robin one task at a time. This is the way 2.4
> used to work which is why with the new 2.6 schedulers which do far more
> out-of-order rescheduling some applications have a problem; particularly
> under load. I suspect it's actually the latter issue. Locking between
> threads should prevent that being a problem, though. You already
> mentioned that you dont use sched_yield() and I couldn't even begin to
> look at the wine code myself so perhaps you know something more.
Hi Con,
One thought that occurred to me, and this is just a random theory, is
that maybe the issue is not with the Wine code but the Win32 code run on
top of it. Do you know how 2.6 scheduling compares with 2.4 and Windows
(NT) scheduling? Could it be that some apps are written to expect
Windows-style scheduling and fail to work if they don't get it?
In case you hadn't noticed, I'm afraid I only have first-year CS
knowledge of scheduling :/
thanks -mike