Создание выходной документации
Важно знать, что повторные запросы на вход в критическую секцию не вызовут самоблокировку потока и достаточно однократного вызова LeaveCriticalSection для выхода из критической секции. С другой стороны вход в критическую секцию окажет влияние только на потоки, также запросившие вход в свою критическую секцию, остальные потоки продолжают нормально выполняться.
Любой поток может, используя вызов функции DeleteCriticalSection, освободить соответствующий системный ресурс, захваченный при инициализации объекта, после чего объект критическая секция уже не может быть использован для синхронизации.
Защищенный доступ к переменным
Win32 API предоставляет три функции для защищенного доступа к 32-разрядным переменным. Функции InterlockedIncrement и InterlockedDecrement соответственно увеличивают и уменьшают значение переменной. Функция InterlockedExchange устанавливает защищенную переменную в заданное значение. Эти функции чрезвычайно полезны для работы, т. к. скрытым от программиста путем обеспечивают тот же эффект, что и использование критических секций.
Функция Interlocked Increment обеспечивает увеличение защищенной переменной и возвращает ноль, если новое значение переменной равно нулю, или возвращает число с тем же знаком, что и у переменной, при этом сами значения могут не совпадать.
LONG lnterlockedIncrement (LPLONG lpAddend);
lpAddend– адрес защищенной переменной.
Функция Interlocked Decrement обеспечивает увеличение защищенной переменной и возвращает ноль, если новое
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |


