Ci-dessous n'est pas une simple transcription du rapport de l' atelier CLRium , mais une version révisée du livre .NET Platform Architecture . La partie de celle-ci qui concerne les flux.
Threads et planification des threads
Qu'est-ce qu'un flux? Donnons une brève définition. À la base, un flux est:
, .NET — - . .NET - Windows. .NET Windows ( Windows thread id , ). , -.NET .NET, : , , . volatile, Interlocked SpinWait. lock
. .
. — . ? , — , . . .
— . : . - .. .
" ?", — , — " "Intel Xeon 8 16 ". - — — . 8 . Hyper-Threading, ( ). , . , , , , . +=2 Hyper-Threading. .. .
— : - ( , Hyper-Threading), - , , , , .. , .
: , - . , .
, ? , — . . , : , . — , . : . . , , , : , , . — Console.ReadKey()
.
Windows 10, , 1,5 . , 20 , , , 4, , 20 1 7,5 … , . - . , … , - .
, — - .
— CreateThread
. . CreateThread
new Thread()
, .NET .
:
1) :
- (SECURITY_ATTRIBUTES) + .
.NET , ;
2) :
3) —
4) .
, .NET — . , , .. . . , .
: .NET , , ManageThreadId Thread.
: CREATE_SUSPENDED
— . .NET .
CreateRemoteThread
, . ( Snoop). . .NET , . — .NET runtime. , : WinAPI , . , .NET , ( ). — runtime. : , ( -.NET runtime, C/C++ , ). .NET - .
: .NET - (, )
, , . , . . : , . : , , . Windows. — , .
, . Windows : . , , . — , , (UMS ). , .. , . ? . , , , . , . , , , .

Windows 32 (0-31)
- 1 (00 — 00) — Zero Page Thread;
- 15 (01 — 15) — ;
- 16 (16 — 31) — .
Zero Page Thread. — , , , , , .. . : , - . , , - . runtime ( — .NET CLR) . , : - , , : . - , : . . , ?
, , , - - , . , Real Time . . .. - ( — , , , , ) 15
, : 16
, — . "" .
Windows API.
— . , : - ( ) : . , , , . , , — . . , , , . , - , . .. .
, : , : - — . , . ?
6 . — , . " ", - .
— , . , . — , Normal:
- Normal Normal, Normal 8 ( №4 );
- Above Normal, 10. , : Normal 10.
? , .
, ,
, : ( ). , . .
, , . , , - Below Normal. , 6 . . ?
3
Normal +0 . Below normal — (-1) . .. Below Normal
'Below Normal' 8 - 1 = 7
( Normal
), 6 - 1 = 5
. Lowest (-2) 4
.
Idle
Time Critical
— (-15 +15). Normal — 0
: -2, -1, +1 +2? . , (5,4,3,2,1) , : 5 — , 4 — , 3 — , 2 — , 1 — , 4. 10- ( — 100-), : 9 7? , 3 4?
. Normal. , Normal
Normal (Normal above), Normal (Normal below).
(Higest Lowest). , , . , , , : . Time Critical
. : , . Idle
. — .
?

Normal ( 3) Normal — 8. Above Normal Normal 9. Higest, Normal 10.
Windows , :
- Normal Above-Normal
- Higest Normal
10.
: Normal, — Higest,
Higest Normal, .
, Real-Time , Real-Time — . .., , , . : , , real-time. , , Windows .
, ,
Real-Time , , .
, , . , Above-Normal Normal Below-Normal ( ):

, , . , (. 3).
, , – Normal.
, CLRium #7, . .
: , .