
SPO5
.pdf51
m% 8 ( CloseHandle 1 0 / 0 !w hObject.
F . 5.1a / / 9 D (
Create Process. k D D/ / 8 Calculator ( . 5.1b 5.1c). i, D Create Process D 1 - % 9 8 / ( / 9 % ( Windows. .D-
Calculator 0" ( % % 8 02 " 1 / / 1./ 8 02 8 (2, / ( % % " (
" , 8 0" ( % 0 % 9 01 7% 8
VOID Sleep(
DWORD dwMilliseconds // ( ! 1/ 6 (, % / 2
);
k 7% 8 ( 0 1 / 06
D% .
( " !0 / " 8 0 0 9 6 -
!2 / 01 7% 8 CreateProcess 7 % dwCreationFlags 9 1 " CREATE_NEW_CONSOLE.
5.3. 2 ? 24
|
|
|
|
|
|||
|
|
|
|
|
|
; 1 ! 9 / 0. . ( 0" ( % % |
|
1 |
1 |
" N1 / N2 (N1 < N2) 0 / %" |
|
1 " i . ( 1 % - |
|||
|
|
||
|
|
%A " 9 1/ 8 . |
|
|
|
; 1 ! 9 / 0. . ( 0" ( 1- |
|
2 |
1 |
/ " N1 / N2 0 / %" 1 - |
|
" i . ( 1 % %A |
|||
|
|
||
|
|
" 9 1/ 8 . |

|
|
|
|
|
|
|
|
|
|
52 |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
; 1 ! 9 / 0. . ( 0" ( 7 - |
||||||||||||||||||||||
3 |
1 |
" |
N 0 / %" 1 " i- |
|||||||||||||||||||||
. ( 1 % %A " |
||||||||||||||||||||||||
|
|
|||||||||||||||||||||||
|
|
9 1/ 8 . |
|
|
|
|
|
|
|
|
||||||||||||||
|
|
; 1 ! 9 / 0. . ( 0" ( 1 "- |
||||||||||||||||||||||
|
|
7 %: |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
= |
1 + |
2 + |
|
|
|
|
|
|
|
||||||||
4 |
2 |
|
|
|
|
|
3 + + !" |
|
|
|
||||||||||||||
|
|
0 / %" 1 " |
i . ( - |
|||||||||||||||||||||
|
|
|
1 % %A " 9 1/ |
|||||||||||||||||||||
|
|
8 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
; 1 ! 9 / 0. . ( 0" ( 1 "- |
||||||||||||||||||||||
|
|
7 %: |
|
|
|
|
|
|
1 |
|
|
|||||||||||||
5 |
2 |
|
= |
|
|
1 |
|
|
+ |
1 |
|
|
|
+ + |
|
|
||||||||
|
|
|
#$ 1 |
|
#$ 1 + #$ 2 |
|
#$ 1 + + #$ " |
|||||||||||||||||
|
|
0 / %" 1 " |
i . ( - |
|||||||||||||||||||||
|
|
|
1 % %A " 9 1/ |
|||||||||||||||||||||
|
|
8 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
; 1 ! 9 / 0. . ( 0" ( 1 "- |
||||||||||||||||||||||
|
|
% 0 ! " (/ |
%& |
|
|
|||||||||||||||||||
6 |
2 |
# % = % |
& |
|
|
|
%& |
|
|
%& |
|
|
|
|
||||||||||
|
|
|
+ |
1 + %& |
+ |
1 + %& ' |
+ + |
1 + %& ( |
+ |
|||||||||||||||
|
|
1 / 6 " 9A 0 / %" 1 " |
||||||||||||||||||||||
|
|
|
i . ( |
1 % %A "- |
||||||||||||||||||||
|
|
9 1/ 8 . |
|
|
|
|
|
|||||||||||||||||
|
|
; 1 ! 9 / 0. . ( 0" ( 1 "- |
||||||||||||||||||||||
|
|
% 0 ! " (/ |
%& |
|
|
|||||||||||||||||||
7 |
2 |
# % = % |
& |
|
|
|
%& |
|
|
%& |
|
|
|
|
||||||||||
|
|
|
+ |
1 + %& |
+ |
1 + %& ' |
+ + |
1 + %& ( |
+ |
|||||||||||||||
|
|
1 / 6 " 9A 0 / %" 1 " |
||||||||||||||||||||||
|
|
|
i . ( |
1 % %A "- |
||||||||||||||||||||
|
|
9 1/ 8 . |
|
|
|
|
|

53
; 1 ! 9 / 0. . ( 0" ( 1 "-
% 0 ! " (/
8 2 |
# % = % − |
%& |
+ |
%) |
− |
6 |
+ + −1 |
(*+ %&( |
+ |
|
3! |
5! |
7! |
2 − 1 ! |
1 / 6 " 9A 0 / %" 1 "
i . ( 1 % %A "-
9 1/ 8 .
; 1 ! 9 / 0. . ( 0" ( 1 "-
% 0 ! " (/
9 2 |
|
& |
|
' |
( |
( |
|
|
# % = 1 − % + % |
− % |
% .−∞; 0 |
||||||
|
|
|
+ + −1 % |
|
1 / 6 " 9A 0 / %" 1 "
i . ( 1 % %A "-
9 1/ 8 .
; 1 ! 9 / 0. . ( 0" ( 1 "-
% 0 ! " (/
10 |
2 |
1 |
+ |
1 |
1 |
+ |
1 |
1 |
+ |
1 |
1 |
+ 4 % 1; ∞ |
|
|
# % = 2 13 |
3 |
∙ %' |
5 |
∙ %2 |
7 |
∙ %3 |
1 / 6 " 9A 0 / %" 1 "
i . ( 1 % %A "-
9 1/ 8 .
; 1 ! 9 / 0. . ( 0" ( 1 "-
% 0 ! " (/
11 2 |
# % = |
1 |
6% − |
%' |
%2 |
%3 |
|
!25 |
2 ∙ 3 + |
2& ∙ 2! ∙ 5 − |
2' ∙ 3! ∙ 7 + 7 |
1 / 6 " 9A 0 / %" 1 "
i . ( 1 % %A "-
9 1/ 8 .

54
|
|
; 1 ! 9 / 0. . ( 0" ( 1 "- |
||||||||||
|
|
% 0 ! " (/ |
|
|
||||||||
12 |
2 |
# % = % + |
%& |
+ |
%) |
+ |
%8 |
+ + |
%&( |
+ |
|
|
|
|
|
2! |
|
4! |
6! |
2 ! |
|
|
|||
|
|
1 / 6 " 9A 0 / %" 1 " |
||||||||||
|
|
i . ( 1 % %A "- |
||||||||||
|
|
9 1/ 8 . |
|
|
||||||||
|
|
9 % 1 / ( % 9 " |
|
|||||||||
|
|
/ 7 %: |
|
|
|
|
|
|
||||
|
|
1& = 1 |
|
|
|
|
|
|
|
|
|
|
13 |
2 |
2& = 1 + 3 |
|
|
|
|
|
|
|
|
|
|
|
|
3& = 1 + 3 + 5 |
|
|
|
|
|
|
|
|
||
|
|
4& = 1 + 3 + 5 + 7 |
|
|
|
|
|
|
||||
|
|
…& |
= 1 + 3 + 5 + 7 + + 2" − 1 |
|
|
|||||||
|
|
" |
|
|
||||||||
|
|
; 1 ! 9 / |
0. . ( |
|
||||||||
14 |
2 |
91 ( / %A 8%, 0" ( % % |
||||||||||
i, D ? 2 |
6 / , 0- |
|||||||||||
|
|
/ 1% 9 |
i . |
( 1 % |
||||||||
|
|
%A " 9 1/ 8 . |
|
|||||||||
|
|
; 1 ! 9 / 0. . ( " 1 7 6 |
||||||||||
15 |
2 |
/ ( % 9 0 80, 1 0 - |
||||||||||
|
|
06 7 6 2 % %. ( 1 % - |
||||||||||
|
|
%A " 9 1/ 8 . |
|
|||||||||
|
|
; 1 ! 9 / |
0. . ( |
|
||||||||
|
|
91 ( %, 2 (?%A 1 8 ", |
||||||||||
|
|
0 / i 06 i i " |
||||||||||
16 |
3 |
9A ( , / «-1211» / D / 9 |
||||||||||
|
|
0 /% «% 0 (" / / /8 9»). ( |
||||||||||
|
|
1 % %A " 9 1/ - |
||||||||||
|
|
8 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
|
|
|
|
|
|
|
|||||||||
|
|
; 1 ! 9 / 0. . ( " 1 7 6 |
|||||||||
17 |
3 |
/ ( % 9 0 80, 1 0 - |
|||||||||
|
|
06 7 6 2 1 /. ( 1 % - |
|||||||||
|
|
%A " 9 1/ 8 . |
|
||||||||
|
|
; 1 ! 9 / 0. . ( " 1 7 6 |
|||||||||
|
|
/ 06 8 " 06 , % (/ " |
|||||||||
18 |
4 |
1 A 91 A! |
- |
||||||||
|
0 / 1% 9 0 |
||||||||||
|
|
||||||||||
|
|
06 7 6. ( 1 % %A |
|||||||||
|
|
" 9 1/ 8 . |
|
|
|||||||
|
|
; 1 ! 9 / |
0. . ( |
||||||||
|
|
91 ( %, 2 (?%A " 1 |
|||||||||
|
|
A? 6 " 6, 0 / i 06 i- |
|||||||||
19 |
4 |
i |
" |
9A |
( , |
/ |
|||||
|
|
« |
−10.13 |
» / D / 9 0 /% «% / ( 9 |
|||||||
|
|
|
|
|
|
|
|
|
|||
|
|
8 02 /8 9 02»). ( 1 % - |
|||||||||
|
|
%A " 9 1/ 8 . |
|
||||||||
|
|
; 1 ! 9 / 0. . ( " 1 7 6 |
|||||||||
|
|
/ 06 / %A 8%, 0" ( % % |
|||||||||
20 |
4 |
i, D ? 2 |
6 ! " 6 / - |
||||||||
, 0 / 1% 9 |
i . ( |
||||||||||
|
|
||||||||||
|
|
1 % %A " 9 1/ 8- |
|||||||||
|
|
. |
|
|
|
|
|
|
|
||
|
|
; 1 ! 9 / |
0. . ( |
||||||||
|
|
91 ( % 1 % 6 / 8 – «! %A |
|||||||||
|
|
%», % , |
0 / |
i 1 " |
|||||||
21 |
4 |
6 , / " / (- |
|||||||||
|
|
" 7 0 / %" " |
i . |
||||||||
|
|
( |
1 % %A " 9 |
||||||||
|
|
1/ 8 . |
|
|
|
|
|||||
|
|
; 1 ! 9 / |
0. . ( |
||||||||
|
|
91 ( ! 11 8 ". z ( (- |
|||||||||
22 |
4 |
( 9A / 6, |
i 0 / ( 1 - |
||||||||
9 , !? « ( ( ( 9A |
|||||||||||
|
|
||||||||||
|
|
/ 6» %" . ( |
1 %- |
||||||||
|
|
%A " 9 1/ 8 . |
56
( % 1 / ( 0" 6, 91%6 7%-
8 A Sleep.
5.4. + ?7 2 > ?
1.1/ 6 K /2 /(? .
2.2 1/ K (, / /% 9- 0 1 / , 1/ 6 D / ( K ( - 6 1 / ". 0 / , / %
i D (.
3.i D K 1/ 6 D ( K A?%A
%A 1 / "% – 1 % D ( 8-.
5.5. " J 2 1
1.m % / /% 9 1 / (.
2.( " ( " 9.
3.5 7 6 cpp h.
4.; 1% 9 0 ( 0, / i 02 6.
5.6. ? 7 ?
1.6 8 9A 1/ A ( 8 0?
2.( 7% 8 ( %D / ( 1/ ( 8 ?
3.; D 1 " 7% 8 WaitForSingleObject.
4.; D 1 " 7% 8 CloseHandle.
5.! 1, 8 ( / ( ( - ! 0 8 D/% 1 %? 0 8 ?
57
6., .6. " 2 3 H 7- 1 ?I 7 2 J 24 " Windows.
6.1.( > ?
= 9A ! 0 ( ( ( 1 0
7% 8 ( / ( C Windows.
6.2. 21 1
. 8 D / % 9 9 9 02 % 6 -
( / . k % 10 A (
(threads). F !2 / 9, " / D / " D-
/ 9 / , 06 10 ( 0 (main threads). C/ " 0 D ( 9 ! 6
! „5, / " 9 %? ( 9 % 8-
.
; / 8 " - D ( 2 / D/% 8 , D/% , " (- ( ( 6 9 6 1 / " (multitasking). "- /, " " D / 9 06 8 - D !0 9 0 !0, " / D. C/ -, 8 (/ %" , 91 " %?-
0K i77 9 0. + / -
( / 91 , D 0 ( 9 (
1! 80, 7 7, 7 2
/ % / .
C / ( 8 ( D/% , -
8 / 9 2 / / 6 /0 / %- 6. / 8 , " / " 02 - D 6, " 0 91%A !? ! 6 -

58
(, 7 6 0 6 0 / % % 6 . k 1 " , "
91%A / D ! 9 0 0.
. D !0 9 0 0 A 0 ( 9 ( ( . 6.1). + 9 D 2 / 9 1 ( ( -
( A 0 ( !. i, D 2 / 9- ( ( D / ( (!) D/ 9 " ( / - 0 / 2 1 %A? !0 ( / % . / - 6 ! 6 ! !%/% 1 / 6 0 9 0 / -
( (.
|
|
" P Q |
|
|
Q R |
|
0 |
|
" R |
|
" , % - |
|
||
|
|
|
|
- B R % |
|
|
|
) 9 CD /
S - P Q
P Q B R
T , P )
. 6.1. U % %
( 0 ( . 6.1 D 2 / 9 ( 9 /
8. .i % / ( 1 8 6 1 / " !% (
" /9 ( . 6.2) 1 ! 02 . F
. 6.2 1 " /9 , 0 !%/% 0 ( 9 ( -
/ 9: A, B, E, D, C.
C 9 |
|
|
|
C 9 |
|
C 9 |
|
|
C 9 |
|
C 9 |
||
|
|
|
|
B |
|
C |
|
|
D |
|
E |
||
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
0 |
|
0 |
|
|
0 |
|
0 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. 6.2. ,
59
( 1/ ( / 1 %?-
8 %D 7% 8 ( CreateThread.
static HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpsa,
DWORD dwStackSize,
LPTHREAD_START_ROUTINE pfnThreadProc, void* pvParam,
DWORD dwCreationFlags, DWORD* pdwThreadId
)
|
|
> 26 6.1 |
|
. 0 7% 8 CreateThread |
|
|
|
|
" |
|
, |
lpsa |
|
1 9 % % %, / D ?%A !%- |
|
|
0 1 ? 0 |
dwStackSize |
|
F " 9 06 1 ! 6 2 |
pfnThreadProc |
|
1 9 7% 8 A |
pvParam |
|
% 7% 8 |
dwCreationFlags |
|
m 1/ ( |
pdwThreadId |
|
1 9 %A, 6 !%/ - |
|
|
/ 7 |
. 0 1%A? 6 , / -
6.1.
,2 2 H 6.1. m 6 Thread1.cpp
#include "stdafx.h" #include <windows.h> #include <iostream> #include <locale> #include <cmath>
using namespace std;
const int g_MaxThreads = 10; const int g_BufSize = 255;
60
DWORD WINAPI MyThreadFunction(LPVOID lpParam );
// ! > #
struct MyData { int numb; int val1; int val2;
double rezult;
};
int _tmain()
{
setlocale(LC_CTYPE, "Russian_Russia.1251"); ::SetConsoleTitle(L"Threads1");
MyData *pDataArray[g_MaxThreads];
HANDLE hThreadArray[g_MaxThreads];
DWORD dwThreadIdArray[g_MaxThreads];
// % ! = ! …! • . for( int i=0; i<g_MaxThreads; i++ )
{
// ‚=! ! ! =? #. pDataArray[i] = new MyData;
if( pDataArray[i] == NULL )
{
//y > g g #=!
//> # g #=
return 0;
}
pDataArray[i]->numb = i; //
pDataArray[i]->val1 = 1000 + int((double)rand()/RAND_MAX*10000);
pDataArray[i]->val2 = 1000 + int((double)rand()/RAND_MAX*10000);
}
// >! # MAX_THREADS ? #. for( int i=0; i<g_MaxThreads; i++ )
{
// >! #. hThreadArray[i] = CreateThread(
NULL, |
// > P = |
0, |
// = > |
MyThreadFunction, |
// > # |
pDataArray[i], |
// |
// • # |
|
0, |
// • >! |
&dwThreadIdArray[i]); // # ># P = ! //