Имя пользователя:
Пароль:
 

Название темы: Multithreading on multicore
Показать сообщение отдельно

Новый участник


Сообщения: 8
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата Flick:
Прав ли я, утверждая, что в независимости от того как бы хорошо мы не распаралелили приложение, потоки все равно будут выполнятся один за другим? Или я не понимаю, что такое time-slicing »
Независимо от того многопроцессорная машина или однопроцессорная, операционные системы всё равно рубят любые потоки на части в соответствии с приоритетами. Это и есть time-slicing. Вызвано это тем, что число потоков (в пределах всей ОС) как правило больше, чем число процессоров в системе и процессорное время как-то надо делить между всеми желающими.

А остальное зависит от того, какую стратегию использует планировщик задач конкретной оси. Windows, например, по умолчанию стремится "размазать" даже один поток между всеми процессорами, рассылая каждому процессору по очереди свой кусочек. Исполнение потоков на одном/нескольких процессорах зависит от конкретной ситуации, которая сложилась в данный момент на данной ОС. Об этом, мне кажется, и речь в процитированном тексте. То есть, может быть так, может быть этак. Никаких гарантий.

Но это не значит, что не стоит распараллеливать код. При прочих равных условиях на многопроцессорных системах он, ясное дело, будет быстрее, чем однопоточный. Просто условия бывают разные.

Отправлено: 16:51, 30-09-2009 | #6

Название темы: Multithreading on multicore