Название: Помогите разобраться с QThread'ами (windows VS linux) Отправлено: nik135 от Май 16, 2008, 10:16 Есть код, который работает по-разному на windows и linux.
Это пример из книжки, немного доработанный мною(всунут QMutex) один поток выводит на консоль "B", второй "A". В Windows Выводится "BABABABABABABABABABABABABABABABABAB" и т.д. В Linux работает так: "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" Как добиться такого же вывода, как в Windows? Архив с исходниками прилагаю, проверьте как у вас? Название: Re: Помогите разобраться с QThread'ами (windows VS linux) Отправлено: Mikhail от Май 16, 2008, 12:39 Есть код, который работает по-разному на windows и linux. Это пример из книжки, немного доработанный мною(всунут QMutex) один поток выводит на консоль "B", второй "A". В Windows Выводится "BABABABABABABABABABABABABABABABABAB" и т.д. В Linux работает так: "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" Как добиться такого же вывода, как в Windows? Архив с исходниками прилагаю, проверьте как у вас? Проверь сначала как работает недоработанный тобой пример. Название: Re: Помогите разобраться с QThread'ами (windows VS linux) Отправлено: nik135 от Май 16, 2008, 13:21 Проверь сначала как работает недоработанный тобой пример. Абсолютно точно так же. Если выкинете мутекс, получится исходный код примера. Название: Re: Помогите разобраться с QThread'ами (windows VS linux) Отправлено: Alex03 от Май 19, 2008, 07:21 Комп один или разные под винду/линукс?
Если один то ядро в линуксе грузится SMP-ёвое? Т.е. есть подозрение что в линуксе всё вертится на одном проце, а в винде на нескольких. Ну и как второй вариант (если всё вертится на одном ядре проца) - разное поведение ОС-ей по части шедулинга при QThread::TimeCriticalPriority и операциях ввода/вывода. Название: Re: Помогите разобраться с QThread'ами (windows VS linux) Отправлено: nik135 от Май 19, 2008, 08:58 Комп один или разные под винду/линукс? Если один то ядро в линуксе грузится SMP-ёвое? Т.е. есть подозрение что в линуксе всё вертится на одном проце, а в винде на нескольких. Ну и как второй вариант (если всё вертится на одном ядре проца) - разное поведение ОС-ей по части шедулинга при QThread::TimeCriticalPriority и операциях ввода/вывода. Проверялось как на одном компе, так и на разных. Проверялось на smp и не smp ядрах (2.4 и 2.6), а также при разных приоритетах потоков. Я склоняюсь к тому, что это действительно шедулер так работает(имхо криво, так как время выделяемое на каждую нить непостоянно, некоторые нитки вообще могут "замереть", а потом "отвиснуть"). Как побороть линуховый шедулер, если это действительно он? Никому такое поведение не мешает при разработке приложений? зы. народ, очень нада, неужели никто не сталкивался? |