пятница, апреля 27, 2007

Многозадачность и многопоточность в Windows

Очень хорошая статья "То, что вам никто не говорил о многозадачности в Windows". Автор Роман Лут.
Статья будет интересна не только игроделам. Написана живым и ясным языком, без закидонов и километров исходников. Если вы хотите знать на что-же все таки влияет приоритет потоков, что происходит при вызове Thread.Sleep(), и почему много потоков это почти всегда хуже, чем один поток - welcome.

2 комментария:

Elena Makurochkina комментирует...

Спасибо за наводку. Написанное хорошим языком приятно почитать даже то, что на собственном опыте опробовано. А особенно полезна информация про 2-х ядерные процессоры.
Но решаемая проблема, мне кажется, все-таки специфична для игровых приложений (и еще для небольшого класса вычислительных задач). И в энтерпрайзе и в стандартных конечнопользовательских приложениях треды делаются только по необходимости. Для длительных вычислений – чтобы интерфейс не вис. Для работы с сетью. Для работы с базой, когда параллельно разная информация запрашивается (что бывает очень редко), или когда в фоне идет какая-то обработка (что тоже бывает довольно редко). Во всех этих случаях не требуется частой синхронизации потоков.

Кибунго комментирует...

У меня есть поучительный анекдот:
Мужик подходит к кассе, чтобы сделать покупку. Говорит: "Девушка, дайте мне килограмчик картошки, полкило помидоров и ещё вот этот..." В этот момент встревает другой мужчина: "Девушка, а почём у вас перец?!" Девушка достаёт нож и режет горло обоим. Объекты, хорошо работающие в однопоточной среде, могут совершенно непредсказуемо повести себя в многопоточной.