Russian Qt Forum

Qt => Общие вопросы => Тема начата: nik135 от Май 16, 2008, 10:16



Название: Помогите разобраться с 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), а также при разных приоритетах потоков. Я склоняюсь к тому, что это действительно шедулер так работает(имхо криво, так как время выделяемое на каждую нить непостоянно, некоторые нитки вообще могут "замереть", а потом "отвиснуть"). Как побороть линуховый шедулер, если это действительно он? Никому такое поведение не мешает при разработке приложений?

зы. народ, очень нада, неужели никто не сталкивался?