Π 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Linux, ΠΊΠ°ΠΊ ΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠΈΡΡΠ΅ΠΌ Unix, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ time_t ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ Π΄Π»ΠΈΠ½ΠΎΠΉ 32 Π±ΠΈΡΠ°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π² 10:14:07 Π²Π΅ΡΠ΅ΡΠ° 18 ΡΠ½Π²Π°ΡΡ (ΡΠ΅ΡΠ²Π΅ΡΠ³) 2038 Π³ΠΎΠ΄Π° ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½ΠΈΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΡ 10:14:08 Π²Π΅ΡΠ΅ΡΠ° 18 ΡΠ½Π²Π°ΡΡ (ΡΠ΅ΡΠ²Π΅ΡΠ³) 2038 Π³ΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ ΠΊΠ°ΠΊ 3:45:52 Π²Π΅ΡΠ΅ΡΠ° 13 Π΄Π΅ΠΊΠ°Π±ΡΡ (ΠΏΡΡΠ½ΠΈΡΠ°) 1901 Π³ΠΎΠ΄Π°. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠΈΡΡΠ΅ΠΌΠ° Linux Π½Π΅ ΠΏΡΠΎΡΠ²Π»ΡΠ΅Ρ "ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ 2000-Π³ΠΎ Π³ΠΎΠ΄Π°" (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ), ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ Π½Π΅ΠΉ ΡΠ²ΡΠ·Π°Π½Π° "ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° 2038-Π³ΠΎ Π³ΠΎΠ΄Π°".
ΠΠ° 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ time_t ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ 64-Π±ΠΈΡΠΎΠ²ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ. ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ 64-Π±ΠΈΡΠΎΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ Π°ΡΡΡΠΎΠ½ΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ daytime.Ρ.
1: /* daytime.Ρ */
2:
3: #include <stdio.h>
4: #include <sys/time.h>
5: #include <unistd.h>
6:
7: int main () {
8: struct timeval tv;
9: struct timezone tz;
10: time_t now;
11: /* beginning_of_time β ΡΡΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΠΌΠΎΠ΅ time_t*/
12: time_t beginning_of_time = 1L<<(sizeof(time_t)*8 - 1);
13: /* end_of_time - ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΠΌΠΎΠ΅ time_t */
14: time_t end_of_time = ~beginning_of_time;
15:
16: printf("time_t ΠΈΠΌΠ΅Π΅Ρ %d Π±ΠΈΡ Π² Π΄Π»ΠΈΠ½Ρ\n\n", sizeof(time_t) *8);
17:
18: gettimeofday(&tv, &tz);
19: now = tv.tv_sec;
20: printf("Π’Π΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π½Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΡΠΊΡΡΡΡ timeval:\n"
21: "tv.tv_sec = 0x%08x, tv.tv_usec = 0x%08Ρ \n"
22: "tz.tz_minuteswest = 0x%08Ρ , tz.tz_dsttime = 0x%08x\n\n",
23: tv.tv_sec, tv.tv_usec, tz.tz_minuteswest, tz.tz_dsttime);
24:
25: printf("ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ctime()%s:\n",
26: sizeof(time_t)*8 <= 32 ? "" :
27: " (ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ½ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ°ΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ; Π½Π°ΠΆΠΌΠΈΡΠ΅ "
28: "Control-C)") ;
29: printf("ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ: %s", ctime(&now));
30: printf("Π½Π°ΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ: %s", ctime(&beginning_of_time));
31: printf("ΠΊΠΎΠ½Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ: %s", ctime(&end_of_time));
32:
33: exit(0);
34: }
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠ½ΠΊΡΠΈΡ ctime() ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½Π° (ΠΏΡΠΈ Π»ΡΠ±ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅Π»ΡΡ ) Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΠ΅ΡΡΠ²Π°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ Π² 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ Π°ΡΡΡΠΎΠ½ΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Ρ (Π²ΡΠΎΠ΄Π΅ 64-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π°ΡΠ°Π»Π° ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ). ΠΡΠ»ΠΈ Π²Ρ ΡΡΡΠ°Π»ΠΈ ΠΆΠ΄Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ, Π½Π°ΠΆΠΌΠΈΡΠ΅ Control-C Π΄Π»Ρ Π΅Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
18.2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ²
Π’Π°ΠΉΠΌΠ΅Ρ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠ°ΡΡΡΠ°ΡΡ ΡΠΈΠΊΠ»ΠΎΠ² ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π² ΡΠ΄ΡΠΎ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΡΠ»ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ²: ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ. Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ β ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ (Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡΡ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ°). ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ. Π‘ΡΡΠΏΡΠΈΠ·ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠΎ, ΡΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΈΠ³Π½Π°Π»Ρ.
18.2.1. Π Π΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ
ΠΡΠΎΡΠ΅ΡΡ, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠΌ Π½Π° Π½Π΅Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌ (ΠΈΠ»ΠΈ "ΡΠΏΡΡΠΈΠΌ"). ΠΠ»Ρ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ΅ΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ; ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ . ΠΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ.
unsigned int sleep(unsigned int seconds);
Π€ΡΠ½ΠΊΡΠΈΡ sleep() Π²ΡΠ½ΡΠΆΠ΄Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΡΡΠΏΠ°ΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ (Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ), ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ seconds, ΠΈΠ»ΠΈ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠΈΠ³Π½Π°Π», ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΡΡΠ½ΠΊΡΠΈΡ sleep() ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΡΠΈΠ³Π½Π°Π»Π° SIGALRM, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ alarm(), ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° SIGALRM, ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠ³Π½Π°Π»Π° SIGALRM, ΠΈΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ² (ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π΄Π°Π»Π΅Π΅), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΈ ΡΠΈΠ³Π½Π°Π».
ΠΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ° sleep() Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΠ°Π½ΡΡΠ΅ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΡΠ΅ΠΊΡΠ½Π΄. ΠΡΠ»ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π΄Π»ΠΈΠ»ΡΡ ΡΠΎΠ²Π½ΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π»ΠΎΡΡ, ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ»Ρ.
void usleep(unsigned long usec);
Π€ΡΠ½ΠΊΡΠΈΡ usleep() Π²ΡΠ½ΡΠΆΠ΄Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΡΡΠΏΠ°ΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ (Π² ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ ), ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ usec. ΠΠΈΠΊΠ°ΠΊΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ. ΠΠ° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌ usleep() ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ select().
int select(0, NULL, NULL, NULL, struct timeval tv);
Π€ΡΠ½ΠΊΡΠΈΡ select(), ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π² Π³Π»Π°Π²Π΅ 13, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π° ΡΠΎΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΎΡΡΠΎ Π²Π²Π΅Π΄ΠΈΡΠ΅ Π² ΠΎΠ±ΡΠ΅ΠΊΡ struct timeval ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ, ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Ρ β Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ.
int nanosleep(struct timespec *req, struct timespec *rem);
Π€ΡΠ½ΠΊΡΠΈΡ nanosleep() Π²ΡΠ½ΡΠΆΠ΄Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π·Π°ΡΡΠΏΠ°ΡΡ Π½Π° Π²ΡΠ΅ΠΌΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ req (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° timespec ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ), ΠΏΠΎΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠΈΠ³Π½Π°Π». ΠΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ° nanosleep() ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠ°Π½ΡΡΠ΅ ΠΈΠ·-Π·Π° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°, ΡΠΎ ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ -1 ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄Π»Ρ errno Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ EINTR, Π° ΡΠ°ΠΊΠΆΠ΅, Π΅ΡΠ»ΠΈ rem Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ NULL, ΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ rem ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΡΡΠ°Π²ΡΠ΅Π³ΠΎΡΡ Π² ΠΏΠ΅ΡΠΈΠΎΠ΄Π΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡ nanosleep() Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠ° ΠΈΠ· Π²ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ , ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π±ΡΠ»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ POSIX.1b ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΡΠ°Π½Π΅Π΅ ΠΎΠ½Π° Π½Π°Π·ΡΠ²Π°Π»Π°ΡΡ POSIX.4), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ Π²ΠΎ Π²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΡΡ Unix. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Unix ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΅Π΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ POSIX.1b Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ Single Unix Specification (ΠΠ΄ΠΈΠ½Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Unix).
ΠΠ΅ Π²ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΡ nanosleep(), ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π²ΡΡΠΎΠΊΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Linux, ΠΊΠ°ΠΊ ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΡΡΠ΅ΠΌΠΈΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Ρ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² [12].
18.2.2. ΠΠ½ΡΠ΅ΡΠ²Π°Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΡ
ΠΠ½ΡΠ΅ΡΠ²Π°Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΡ, Π±ΡΠ΄ΡΡΠΈ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ, Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΈΠ³Π½Π°Π»Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π΅. Π’ΠΎΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠΌΠ΅ΡΠ°. Π‘ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Ρ ΡΡΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ°.
ITIMER_REAL ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ Π½Π°ΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΡΠΎΠ² β Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°) β ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΈΠ³Π½Π°Π» SIGALRM. ΠΠ΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ alarm(), ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ sleep(). ΠΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π½ΠΈ alarm(), Π½ΠΈ sleep(), Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ. ITIMER_VIRTUAL ΠΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° β Π½Π΅ ΡΡΠΈΡΡΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡ β ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΈΠ³Π½Π°Π» SIGVTALRM. ITIMER_PROF ΠΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° β Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ΅ΠΌΡ, Π·Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ΄ΡΠΎ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΈ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠΎ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° β ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΈΠ³Π½Π°Π» SIGPROF. Π£ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ, ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΌ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ°.ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ² ITIMER_VIRTUAL ΠΈ ITIMER_PROF ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΡΠΈΠ»ΠΈΡΡΡΡΠΈΡ ΠΊΠΎΠ΄Π°Ρ .
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ² Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠ³Π½Π°Π» ΠΎΠ± ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ ΠΎΠ΄Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°ΡΠΎΠ² (ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, 1-10 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄). ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π΄Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, ΡΠΎ ΡΠΈΠ³Π½Π°Π» Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΡΠ°Π·Ρ ΠΆΠ΅; Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠ³Π½Π°Π» Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΉΠΌΠ΅Ρ ITIMER_VIRTUAL ΡΠ»Π΅Π΄ΠΈΡ Π·Π° Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΡΠΎ ΡΠΈΠ³Π½Π°Π» Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ struct itimerval Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ².
struct itimerval {
struct timeval it_interval;
struct timeval it_value;
};
Π§Π»Π΅Π½ it_value ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΡΡΠ°Π²ΡΠ΅Π΅ΡΡ Π΄ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°. Π§Π»Π΅Π½ it_interval ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΡΠ΅ΠΌΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠ³Π½Π°Π»Π°ΠΌΠΈ; ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ it_value.