>
>Тогда как всё происходит в винде? Ведь она распределяет один поток на
>два и более ядер! нет, нельзя один поток раскидать по ядрам=)
раскидываются потоки по ядрам, один поток на одно ядро, другой на другое.
>Я прводил тесты с этим же ImageMagick, только дистрибутив под винду соответственно.
>
>На сервере стоит 2 двухголовых проца и когда запускаешь процесс конвертации, он
>распределяется на 2 ядра двух процессоров. И время конвертации сокращается в
>двое.
Многопоточное приложение потому что. Поэтому ядро винды может разбросать потоки по процам.
А вот та же конвертация imageMagick под линух может так написана что юзает один поток в принципе. И вообще распределением на процессоры занимается kernel, в принципе есть API для принудительного распределения, но это редко используется т.к. не есть гуд для многопользовательской системы. т.к. существуют и другие приложения и их обделять нельзя.
>Только вот одна проблема - ImageMagick под винду не делает того, что
>он делает под линухом - не рисует и не наносит примитивы
>и текст.
>И еще один вопрос. Как я могу shell заставить работать в два
>потока? Я понимаю, что это достаточно пространный вопрос, но всё же.
Никак, если он сам того не захочет, а если захочет то сам создаст свои потоки, а kernel раскидает как ему удобней. Или речь про необходимость что-то запустить в фоне? В шелле для запуска процесса в фоне после команды ставиться символ &.
Подозреваю что есть недопонимание с понятиями процесс и поток и их соотношением с логическими и физическими процессорами. К тому же потоки бывают user space и kernel space :)