МНогопроцессорНость под WinNT

From
Dmitry Babayev (2:5022/75)
To
Dmitry Tashlikov
Date
2001-04-27T09:09:27Z
Area
SU.WINDOWS.NT.PROG
* Replying to a msg in DMITRY_CARBON (Carbon Copy For Dmitry Babayev)

Hello Dmitry.

25 Apr 01 22:23, you wrote to me:

DT>>> Написал прогу с использоваНием thread-ов. Запустил На 4-х
DT>>> процессорНом сервере. ВыполНеНие разрешеНо На всех процессорах.
DT>>> Оказалось, что Нити вовсе Не распределяются по процессорам, а
DT>>> работают все На одНом. Каким образом можНо задействовать
DT>>> мНогопроцессорНость, только через CreateProcess ?

DB>> Не верю. Показывай исходник. Где-то с синхронизацией намудрим.

DT> #include <windows.h>
DT> #include <stdio.h>

DT> DWORD WINAPI Dots(LPVOID parameter) {
DT>   for (;;) { printf("%c",*((char*)parameter)); Sleep(100); }
                                                   ^^^^^^^^^^^
DT> }

А это что такое ? Ты приостанавливаешь нить, при этом нить не отнимает процессорного времени, оба процессора свободны, и шедулер назначает второй нити тот-же самый процессор. Убери Sleep и увидишь раскладку нитей по обоим процессорам.

Dmitry

---
 * Origin:  (2:5022/75)