C++ and other lectures
Kanalga Telegramβda oβtish
Π£ΡΠ΅Π±Π½ΡΠΉ ΠΊΠ°Π½Π°Π» Π² Π’Π΅Π»Π΅Π³ΡΠ°ΠΌ: ΡΡΡ Π±ΡΠ΄ΡΡ Π°Π½ΠΎΠ½ΡΡ ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π»Π΅ΠΊΡΠΈΠΈ ΠΈ ΡΡΡΠΈΠΌΡ. ΠΠ°ΠΏΠΈΡΠ°ΡΡ Π°Π²ΡΠΎΡΡ: @Tilir Boosty Π°Π²ΡΠΎΡΠ°: https://boosty.to/cpp_lects_rus
Ko'proq ko'rsatish9 769
Obunachilar
+524 soatlar
+127 kunlar
+5630 kunlar
Postlar arxiv
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π·Π°ΠΌΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π΄Π»Ρ ΠΌΠΎΠΈΡ
ΡΠ²Π°ΠΆΠ°Π΅ΠΌΡΡ
ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ².
ΠΠΈ Π΄Π»Ρ ΠΊΠΎΠ³ΠΎ Π½Π΅ ΡΠ΅ΠΊΡΠ΅Ρ, ΡΡΠΎ ΠΌΠΎΠΉ ΠΌΠ°Π³ΠΈΡΡΠ΅ΡΡΠΊΠΈΠΉ ΠΊΡΡΡ ΡΡΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° (https://www.youtube.com/playlist?list=PL3BR09unfgcjSJXcCn7Y6VBdGfyqeix5w) Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π» Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅. ΠΠ΅Π½ΡΡΠ΅ Π»ΡΠ΄Π΅ΠΉ Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎ ΠΎΠ½ ΡΠΈΡΠ°Π»ΡΡ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ Ρ (Π½Π΅ΠΉΡΠΎΠ½ΠΊΠΎΠΉ) Π΄ΠΎ Π»Π΅ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠ» ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π°ΠΉΠ΄Ρ. ΠΠ°Π»Π΅Π΅ Ρ Π±ΡΠ°Π» Π΄ΡΡΠ³ΡΡ Π½Π΅ΠΉΡΠΎΠ½ΠΊΡ, ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π» ΡΠ²ΠΎΠΉ Π³ΠΎΠ»ΠΎΡ Ρ Π·Π°ΠΏΠΈΡΠΈ Π»Π΅ΠΊΡΠΈΠΈ Π½Π° ΡΡΡΡΠΊΠΎΠΌ, Π³ΡΡΠ·ΠΈΠ» Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ ΡΠ»Π°ΠΉΠ΄Π°ΠΌΠΈ Π² ΡΡΠ΅ΡΡΡ Π½Π΅ΠΉΡΠΎΠ½ΠΊΡ ΠΈ ΠΏΡΠΎΡΠΈΠ» ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ½Π΅ ΠΏΠΎΠ΄ΡΡΡΠΎΡΠ½ΠΈΠΊ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΠΈ Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΡΡΠΎΡΠ½ΠΈΠΊΠ° Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠΆΠ΅ ΠΈ ΡΠΈΡΠ°Π».
Π, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Ρ ΠΏΡΠΎΡΠΈΠ» Π½Π΅ΠΉΡΠΎΡΠ΅ΡΡ ΡΠ±ΡΠ°ΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΡΡΠΎΡΠ½ΠΈΠΊΠ° Π²ΡΠ΅ ΡΡΡΠ΅ΠΉΠΊΠΈ, Ρ
ΠΈΡ
Π°Π½ΡΠΊΠΈ, Ρ
Π°Ρ
Π°Π½ΡΠΊΠΈ, ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠ΅ΠΉ ΠΈ Π²ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π΅ΡΡ ΠΈ ΠΏΡΠ°Π²ΠΈΠ» Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»ΠΈ Π½Π° Π»Π΅ΠΊΡΠΈΡΡ
. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΉ ΠΌΠ°Π³ΠΈΡΡΠ΅ΡΡΠΊΠΈΠΉ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΡΡΡΠ΅Π½.
Π§ΠΈΡΡΠΎ Π΄Π»Ρ ΠΌΠΎΠ΅ΠΉ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΠΈ, Π³ΠΎΡΠΎΠ²ΠΎΠΉ, ΠΏΡΡΠΌΠΎ ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠ΅, Π²ΡΠΊΠ»Π°Π΄ΡΠ²Π°Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ°Π³ΠΈΡΡΠ΅ΡΡΠΊΠΈΠΉ ΠΊΡΡΡ ΡΡΠΎΠ³ΠΎ Π³ΠΎΠ΄Π° Π½Π° ΡΡΡΡΠΊΠΎΠΌ. ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Ρ: ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ°Π½Π°ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ. ΠΠ΅ Π½Π°Π΄ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ ΠΊ ΡΠΎΠΉ Π»Π°ΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π°ΡΠ΅, ΠΊΠΎΡΠΎΡΡΡ Ρ ΡΡΠΈΡΠ°Ρ Π½ΠΎΡΠΌΠΎΠΉ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΡΡΠ±Π°.
ΠΡΠΎ Π²ΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡ Π²ΡΠΊΠ»Π°Π΄ΠΊΠΈ.
ΠΠ΅ΠΊΡΠΈΠΈ 1-14: https://t.me/cpp_lects_rus/333
ΠΠ΅ΠΊΡΠΈΡ 15. ΠΠ»Π»ΠΎΠΊΠ°ΡΠΎΡΡ, ΡΠ°ΡΡΡ 1 (https://rutube.ru/video/private/8c6f32ba064b144da5c03bebaac9b773/?p=ajeysAX7NOIy8gglZHfyjw)
ΠΠ΅ΠΊΡΠΈΡ 16. ΠΠ»Π»ΠΎΠΊΠ°ΡΠΎΡΡ, ΡΠ°ΡΡΡ 2 (https://rutube.ru/video/private/22a826a6de7a4ce7ea6ede57b906a2c3/?p=PqktK6w53hLjBnmVfo9V0Q)
ΠΠ΅ΠΊΡΠΈΡ 17. Π£ΠΌΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ (https://rutube.ru/video/private/54cf93fa747a2b356a173d121fd03b64/?p=U0Dp_flMer7_sHaEqyMnXA)
ΠΠ΅ΠΊΡΠΈΡ 18. ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ (https://rutube.ru/video/private/f5774eaf850ca497fbe0c5430256d682/?p=UZqoD2tp_cYklNnG3OGgow)
ΠΠ΅ΠΊΡΠΈΡ 19. ΠΠΎΡΠΎΠΊΠΈ, ΡΠ°ΡΡΡ 1: (https://rutube.ru/video/private/57f909c6b26a9f7fb0b0bac94cc71cdf/?p=5Hd_jmCQjKa08xh5DhZdIw)
ΠΠ΅ΠΊΡΠΈΡ 20. ΠΠΎΡΠΎΠΊΠΈ, ΡΠ°ΡΡΡ 2: (https://rutube.ru/video/private/55e4b99445855bbd4879f1df33fc710c/?p=BSdemL8n3llX_j6wUnBzig)
ΠΠ΅ΠΊΡΠΈΡ 21. ΠΡΠ΅ΡΠ΅Π΄ΠΈ: (https://rutube.ru/video/private/20eddfe5812e76d4054ccd86381be8a6/?p=VoJTbqASCV69p0rXdCL47w)
ΠΠ΅ΠΊΡΠΈΡ 22. ΠΡΠΎΠΌΠΈΠΊΠΈ, ΡΠ°ΡΡΡ 1: (https://rutube.ru/video/private/41f6dde73447b120aa54ce94d595e8b5/?p=rR1519UXAawao77r9n1W_w)
ΠΠ΅ΠΊΡΠΈΡ 23. ΠΡΠΎΠΌΠΈΠΊΠΈ, ΡΠ°ΡΡΡ 2: (https://rutube.ru/video/private/6d5b6477154c4ec918dd6369ceb2b9ce/?p=g2lUeBIgdD0rDGs7XpfJMw)
ΠΠ΅ΠΊΡΠΈΡ 24. ΠΡΠΎΠΌΠΈΠΊΠΈ, ΡΠ°ΡΡΡ 3: (https://rutube.ru/video/private/421dc4d54461d76fda428a96ff9b89dc/?p=QH3ntOxNYMb2FIj21aSYsQ)
ΠΠ΅ΠΊΡΠΈΡ 25. ΠΠΎΡΡΡΠΈΠ½Ρ, ΡΠ°ΡΡΡ 1: (https://rutube.ru/video/private/6d2e0d9e83b30426c2b411332690d115/?p=yF1dmq_x6690j4Jzoj_BVA)
ΠΠ΅ΠΊΡΠΈΡ 26. ΠΠΎΡΡΡΠΈΠ½Ρ, ΡΠ°ΡΡΡ 2: (https://rutube.ru/video/private/2e272db2eddb9cc16edb03990b2241f0/?p=dLA_fMI8UJbdNPDSy_zdAw)
ΠΠ΅ΠΊΡΠΈΡ 27. SYCL ΠΈ GPGPU: (https://rutube.ru/video/private/4e491bb7e3ee717d8ad5fb0e95d1b012/?p=IXTd2TzHtGdTRKrAS4Sr8A)
ΠΠ΅ΠΊΡΠΈΡ 28. Execution: (https://rutube.ru/video/b777c6378138149ab7e2a057baae6cfd)
ΠΠ°, Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° rutube, Ρ ΡΡΡΠΈΠΌΠΈΠ» ΡΡΠ΄Π°.
#cpp_postgraduate
ΠΡΠ»ΠΎΠΆΠΈΠ» Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΠ°ΡΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΡΡ Π² ΠΈΠ½ΡΡΠΈΡΡΡΠ΅ iSpring Π³ΠΎΡΠΎΠ΄ ΠΠΎΡΠΊΠ°Ρ-ΠΠ»Π° (Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅).
Youtube:
https://youtu.be/13b5hHwRvVk
Rutube:
https://rutube.ru/video/596ab835ce4cbb1ef4154bc43da58397/
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ ΠΠ»Π΅ΠΊΡΠ΅Ρ ΠΠ°Π»ΠΎΠ²Ρ (ΠΊΡΡΠ°ΡΠΈ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΊΠ°Π½Π°Π» https://youtube.com/@vividbw) ΠΈ ΠΈΠ½ΡΡΠΈΡΡΡΡ iSpring Π·Π° ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΡΠΌΠΊΡ ΠΈ ΠΌΠΎΠ½ΡΠ°ΠΆ Π²ΠΈΠ΄Π΅ΠΎ.
00:00 ΠΠ°ΡΠ°Π»ΠΎ. ΠΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡ Π»Π΅ΠΊΡΠΈΡ.
03:56 ΠΠΎΡΠΎΠΊΠΈ ΠΈ Π³ΠΎΠ½ΠΊΠ° Π·Π° Π΄Π°Π½Π½ΡΠ΅.
09:35 Mutex ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎΡΠ° Ρ
ΡΠΆΠ΅ Π²ΠΎΡΠΎΠ²ΡΡΠ²Π°.
12:12 RAII ΠΎΠ±ΡΡΡΠΊΠΈ Π½Π°Π΄ mutex.
19:23 ΠΡΡΡΠ΅ΠΊΡ ΡΡΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Ρ. ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ read/write lock.
25:51 Π‘Π΅ΡΡΠΈΠ½Π³ ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π»Π΅ΠΊΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ²ΡΠ΅ Π·Π°ΠΌΠ΅ΡΡ.
29:14 Π£Π±ΠΈΡΠ°Π΅ΠΌ Π² ΡΠ΅Π»ΠΎΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. CAS-ΡΠΈΠΊΠ»Ρ.
34:45 Happens before, Π±Π°ΡΡΠ΅ΡΡ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
42:50 ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΠΊΠ»Π°ΠΌΠ°ΡΠΈΠΈ.
47:30 ΠΡΠΎΠΌΠ°ΡΠ½ΡΠΉ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈ Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΌΠ΅ΡΡ.
52:05 C++26: ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ°ΡΠΈΠΈ Π² ΡΡΠΈΠ»Π΅ RCU ΠΈ Π΅ΡΡ Π·Π°ΠΌΠ΅ΡΡ.
01:01:35 C++26: ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· Hazard Pointers ΠΈ Π΅ΡΡ Π·Π°ΠΌΠ΅ΡΡ.
01:07:55 Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ ΠΈ Π²ΠΎΠΏΡΠΎΡΡ.
ΠΡΠ»ΠΎΠΆΠΈΠ» Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ std::execution Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅. ΠΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ, 28-Ρ Π»Π΅ΠΊΡΠΈΡ Π°Π½Π³Π»ΠΎΡΠ·ΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π³ΠΈΡΡΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΠΊΡΡΡΠ°.
https://youtu.be/ZMcUTZppCAw
Π€ΠΈΠ½Π°Π»ΡΠ½Π°Ρ Π»Π΅ΠΊΡΠΈΡ ΠΌΠ°Π³ΠΈΡΡΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΠΊΡΡΡΠ° ΠΏΠΎ C++ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° std::execution -- Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²Ρ
ΠΎΠ΄ΠΈΡ Π² C++26. ΠΡ Π½Π°ΡΠ½ΡΠΌ Ρ Π΄Π°Π²Π½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠ²: ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ
Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΡΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ std::async. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ reduce ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΈΡ
ΡΡΠ΅Π΄ΡΡΠ² Π±ΡΡΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠ΅ΡΡΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ senders/receivers: ΡΠ°Π·Π±Π΅ΡΡΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ scheduler, sender, receiver ΠΈ operation state, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π΄Π°ΠΏΡΠΎΡΡ ΠΈ ΠΊΠ°ΠΊ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π½ΡΠΌΠΈ execution resources. Π‘Π²ΡΠΆΠ΅ΠΌ ΡΡΡ ΡΠ΅ΠΌΡ Ρ ΠΌΠΈΡΠΎΠΌ GPGPU ΡΠ΅ΡΠ΅Π· bulk-Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
Π·Π°Π΄Π°Ρ ΡΠ΅ΡΠ΅Π· execution scopes ΠΈ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠ°Π·Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠ²ΡΠ·ΠΈ std::execution Ρ ΠΊΠΎΡΡΡΠΈΠ½Π°ΠΌΠΈ, ΠΎΡΠΌΠ΅Π½Π΅ Π·Π°Π΄Π°Ρ ΡΠ΅ΡΠ΅Π· environment ΠΈ Π΅ΡΡ ΡΠ°Π· ΡΠΎΠ±Π΅ΡΡΠΌ ΠΎΠ±ΡΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ: ΠΊΠ°ΠΊ C++26 ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠ΅ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π΅Π· ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ.
Timeline
00:00 ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅.
03:30 ΠΠΈΡΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ reduce.
10:05 std::async ΠΈ Π΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. ΠΠ°ΠΌΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
16:50 ΠΠ΄ΠΈΠ½Π°Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠ½ΠΎΠ²Ρ std::execution Π² C++26.
26:59 ΠΠΎΠ½ΡΠ΅ΠΏΡ sender ΠΈ Π°Π΄Π°ΠΏΡΠΎΡΡ.
35:00 ΠΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠΈΡΠΎΠ΄Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ let_value.
40:16 ΠΠ΄Π°ΠΏΡΠΎΡ bulk: ΡΠ½ΠΎΠ²Π° Π·Π°Ρ
ΠΎΠ΄ΠΈΠΌ Π² ΠΌΠΈΡ GPGPU.
46:05 ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ reduce Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ std::execution.
49:40 Execution scopes: Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ. ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°.
54:41 ΠΠ°Π½Π°Π»Ρ Π² sender. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ upon_error ΠΈ upon_stopped. Π‘ΠΈΠ³Π½Π°ΡΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ.
01:02:19 ΠΡΠΎΠ²Π΅ΡΠΊΠ° completion signatures: ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ Π² ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΠΈ.
01:06:50 Π‘Π²ΡΠ·Ρ ΡΠ΅Π½Π΄Π΅ΡΠΎΠ² Ρ ΠΊΠΎΡΡΡΠΈΠ½Π°ΠΌΠΈ: execution::task.
01:14:40 Π‘Π½ΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° ΠΈ ΠΎΡΠΌΠ΅Π½Π° Π·Π°Π΄Π°Ρ.
01:18:47 ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π΅ΡΡ ΡΠ°Π·, ΡΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅.
#cpp_postgraduate
Π ΡΡΠΎΠΌ ΠΈΡΠ»Π΅ Π³Π΄Π΅ ΡΠΎ Π² 10-Ρ
ΡΠΈΡΠ»Π°Ρ
Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ°Π½Ρ ΠΏΠΎΠ±ΡΠ²Π°ΡΡ Π½Π° ΠΠ°Π»ΡΠ½Π΅ΠΌ ΠΠΎΡΡΠΎΠΊΠ΅. ΠΡΠΎΡΡΠ±Π° ΠΌΠ΅ΡΡΠ½ΡΡ
ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΡΡΡΡ Π² ΡΠ°ΡΠ΅ ΠΈ ΡΠΊΠ°Π·Π°ΡΡ Π΅ΡΡΡ Π»ΠΈ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΠΌΠΎΠ²Π°Π½Π½ΠΎΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈ Π³Π΄Π΅ Π»ΡΡΡΠ΅ ΡΡΡΡΠΎΠΈΡΡ Π²ΡΡΡΠ΅ΡΡ Ρ ΡΠΈΡΠ°ΡΠ΅Π»ΡΠΌΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
ΠΡΠ»ΠΎΠΆΠΈΠ» Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ GPGPU ΠΈ SYCL Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
https://youtu.be/Ebj21eXDRDY
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π³Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ C++. ΠΠ°ΡΠ½ΡΠΌ Ρ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΡΡ
ΡΠ·ΡΠΊΠΎΠ², stateful memory, binding tables ΠΈ Π°Π΄ΡΠ΅ΡΠ½ΡΡ
ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ², Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ OpenCL ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ separate-source compute API. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΠΎΡΠ½ΠΎΠ²Ρ SYCL ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΠ° single-source ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΠΊ Π³Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄ΡΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ SIMT. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈ ΠΊΠ°ΠΊ SYCL ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΠΌΠΈ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ Π»Π΅ΠΊΡΠΈΠΈ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π»ΠΈΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²ΠΈΠ΄Ρ ΠΏΠ°ΠΌΡΡΠΈ, tiled execution, Π±Π°ΡΡΠ΅ΡΡ ΠΈ specialization constants. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎΠ± Π°ΡΠΎΠΌΠΈΠΊΠ°Ρ
Π² GPU API. Π ΡΠΈΠ½Π°Π»Π΅ Π²Π΅ΡΠ½ΡΠΌΡΡ ΠΊ C++ ΠΈ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΏΡΠΈΡΠΎΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ generic address space Π² SYCL. ΠΠ° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π²ΡΠ΅ΠΉ Π»Π΅ΠΊΡΠΈΠΈ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Timeline.
00:00 ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠ΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ GPU ΠΊΠ°ΠΊ execution model.
03:50 ΠΠ°ΠΌΡΡΡ Π² ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ΅ΠΉΠ΄Π΅ΡΠ½ΡΡ
ΡΠ·ΡΠΊΠ°Ρ
Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ GLSL: stateful ΠΈ stateless pointers.
10:35 ΠΠ΅ΡΠ²ΡΠ΅ compute API Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ OpenCL. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΏΠΎΠ² Π² API.
15:40 ΠΠ° ΠΏΡΡΠΈ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ compute API: ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΈΡΡΡΡ C++ Π΄Π»Ρ Π³Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ?
19:34 ΠΡΠ½ΠΎΠ²Ρ SYCL: ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, command groups, iteration space ΠΈ vector addition.
29:15 ΠΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ -- ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° GPGPU.
35:28 ΠΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ: shared memory, device memory ΠΈ ΡΠ½ΠΎΠ²Π° Π°Π»Π»ΠΎΠΊΠ°ΡΠΎΡΡ.
40:25 ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡ ΠΌΠ°ΡΡΠΈΡΡ: ΠΏΡΠΈΠ²Π°ΡΠ½Π°Ρ ΠΏΠ°ΠΌΡΡΡ, oneMKL ΠΈ ΠΏΠ΅ΡΠ²ΡΠ΅ Π·Π°ΠΌΠ΅ΡΡ.
45:15 ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ°ΠΌΡΡΡ ΠΈ Π±Π°ΡΡΠ΅ΡΡ. ΠΠ½Π²Π΅ΡΡΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π²Π½ΡΡΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π³ΡΡΠΏΠΏΡ.
52:52 Π£Π»ΡΡΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ: tiled multiplication, specialization constants ΠΈ Π΅ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅ΡΠΎΠ².
59:52 ΠΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ: Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π°ΡΠΎΠΌΠΈΠΊΠΈ ΠΈ memory model Π² GPU API.
01:09:53 ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠΎΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, generic address space Π² SYCL, hierarchical parallelism ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠΈΠΈ.
#cpp_postgraduate
Repost from C++: Π₯ΡΠΎΠ½ΠΈΠΊΠΈ ΠΡΡΠΊΠΈπ
ΠΠ΅ ΠΌΠΎΠ³Ρ Π½Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ°ΠΌΡΠΌ Π²Π΅ΡΠ΅Π»ΡΠΌ, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΈΠ· Π΄ΠΎΠΊΠ»Π°Π΄Π° Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠ³ΠΎ ΠΠΎΠ½ΡΡΠ°Π½ΡΠΈΠ½Π° ΠΠ»Π°Π΄ΠΈΠΌΠΈΡΠΎΠ²Π°. ΠΠ½ Π΄Π΅Π»Π°Π» Π°Π½ΠΎΠ½Ρ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π² ΡΠ²ΠΎΠ΅ΠΌ tg ΠΊΠ°Π½Π°Π»Π΅.
ΠΡΠΈΠΌΠ΅Ρ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ:
template <auto T = []{}>
struct S {};
S a; S b;
Π ΡΠ΅ΠΌ ΡΡΡ ΡΠΈΠΌΠ΅Ρ. Π£ Π½Π°Ρ T - ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°. Π Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠΎ Π² ΡΠΈΠΏ S Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π»ΡΠΌΠ±Π΄Ρ, ΠΈ Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ
ΡΠΈΠΏΠ°:
static_assert(
!std::is_same_v<decltype(a), decltype (b)>
);
ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΌΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΡΡΡΡΠ΅ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π²ΠΎΡ ΡΠ°ΠΊ:
S<> a, b;
static_assert(
std::is_same_v<decltype(a), decltype (b)>
);
Π’ΠΎ ΡΠΈΠΏΡ, Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ, ΡΡΠ°Π½ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ. ΠΡ, ΠΌΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ ΡΠΈΠΏ, ΠΈ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
Π ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΎΠΏΡΠΎΡ Π² Π·Π°Π». Π ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠΈ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ?
S a, b;
ΠΠ°Π²Π°ΠΉΡΠ΅ Π²Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΡΠ΅ ΡΠ³Π°Π΄Π°ΡΡ?
Π‘ΡΠ°Π²Ρ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΌΡ ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ². ΠΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ.
ΠΠΎ Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ², Ρ Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ.
clang ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ
```
error: template arguments deduced as 'S<(lambda at <source>:4:20){}>' in declaration of 'a' and deduced as 'S<(lambda at <source>:4:20){}>' in declaration of 'b'
7 | S a, b;
```
Π gcc ΡΡΠΈΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠΎ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ
ΡΠΈΠΏΠ°.
```
static_assert(
!std::is_same_v<decltype(a), decltype (b)>
);
```
ΠΡΡΡ.
ΠΡΠ΅Π»ΠΎΠΌ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΠΎΠ½ΡΡΠ°Π½ΡΠΈΠ½Π° Π±ΡΠ» ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΌ, ΠΈ Ρ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΏΠΎΠ½Π°ΡΡΡΡ ΡΡΠ΄Π° Π΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΠ· Π΅Π³ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΡ ΠΌΠ΅ΡΡΡΠ΅Π². Π ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΡΠΉΠ΄Π΅Ρ Π² ΠΎΡΠΊΡΡΡΡΠΉ Π΄ΠΎΡΡΡΠΏ - ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π°ΠΌ ΡΡΡΠ»ΠΊΡ. Π― Π±ΡΠ» ΠΏΡΠΎΡΡΠΎ Π² Π²ΠΎΡΡΠΎΡΠ³Π΅ ΠΎΡ Π΄ΡΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π».ΠΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠ΅Π°ΠΊΡ ΠΈ ΠΊΠ°Π½Π°Π» ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ.
Π ΡΠ»ΠΎΠ²Ρ. Π£ ΠΌΠΎΠ΅Π³ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΌΠ°Π»ΠΎΠ²Π°ΡΠΎ ΠΎΡΠ΅Π½ΠΎΠΊ "ΡΡΠΏΠ΅Ρ" ΠΈ ΠΏΠΎΠΊΠ° ΡΡΠΎ ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²ΠΈΡΡ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π±ΠΈΠ»Π΅Ρ, Π·Π°ΠΉΡΠΈ ΠΈ ΠΊΠ»ΠΈΠΊΠ½ΡΡΡ "ΠΎΡΠ΅Π½ΠΈΡΡ". ΠΡΠΎ Π½Π°ΠΌΡΠΊ ))
ΠΡΠ»ΠΎΠΆΠΈΠ» Π²ΡΠΎΡΡΡ Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ ΠΊΠΎΡΡΡΠΈΠ½Π°ΠΌ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
https://youtu.be/huitkyM1UQE
ΠΠΎ Π²ΡΠΎΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠΈ co_await ΠΈ promise_type ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΡΡΠΈΠ½ Π² C++20/23. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Ρ, ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ await_suspend ΠΈ ΡΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΌΠΎΠ³ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ. ΠΠ°ΡΠ΅ΠΌ, Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ
Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠ², ΡΠ°Π·Π±Π΅ΡΡΠΌ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ awaiters ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠΎΠΈΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΆΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ Π»Π΅ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠΎΡΡΡΠΈΠ½ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π½Π° ΡΠΎΠ±ΡΡΠΈΡ. ΠΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ (stackless) ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½ ΡΡΠ΅ΠΉΠΌ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ
. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΈΡΠ°ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΉ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ callback-based ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°ΠΌΠΈ. Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠΎΡΡΡΠΈΠ½ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ
: ΡΡΠ΅ΠΉΠΌΡ ΠΊΠΎΡΡΡΠΈΠ½, ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌΡΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡ ΠΈ Π΄Π°ΠΆΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ.
00:00 ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠ΅.
04:38 ΠΠ±ΠΎΠ±ΡΠ°Π΅ΠΌ awaitable transformations: ΡΡΠΎ, ΠΊΡΠΎΠΌΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ co_await, Π½Π°ΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ?
13:09 ΠΠ·ΠΎΠ±ΡΠ΅ΡΠ°Π΅ΠΌ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Ρ Π² C++: await_suspend ΠΈ Π΅Π³ΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠ°.
18:42 Case study: ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡ Π½Π° ΠΊΠΎΡΡΡΠΈΠ½Π°Ρ
.
31:00 ΠΠΎΠ½Π°Π΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° co_await.
37:55 Π‘ΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΡΡΡΠΈΠ½ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΎΠ±ΡΡΠΈΡ ΠΈ Π΅Ρ ΡΡΡΠΏΡΠΈΠ·Ρ.
48:00 ΠΠΎΡΡΡΠΈΠ½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ std::future.
52:05 ΠΠΎΡΡΡΠΈΠ½Ρ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
Π·Π°Π΄Π°Ρ.
56:18 ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΊΠΎΡΡΡΠΈΠ½ ΠΈ ΠΈΡ
ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ
.
01:02:04 ΠΠ±Π·ΠΎΡ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅.
#cpp_postgraduate
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ. ΠΡΠΎ ΠΈΠ΄ΡΡ Π½Π° C++ Russia ΠΈΠ· ΠΌΠΎΠΈΡ
ΡΠ²Π°ΠΆΠ°Π΅ΠΌΡΡ
ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ², ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π²Π½Π΅ΡΡΠ½Π½ΡΠ΅ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ.
https://cppconf.ru/schedule/table/#day-2
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΉ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ Π² ΡΡΠ±Π±ΠΎΡΡ ΡΡΡΠΎΠΌ, Π° ΠΠ½ΡΠΎΠ½ ΠΠΎΠ»ΡΡ
ΠΈΠ½ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ Π² Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΡΠ΅ Π²Π΅ΡΠ΅ΡΠΎΠΌ (ΡΠ°Π½Π΅Π΅ Π±ΡΠ»ΠΎ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ).
ΠΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΠ°ΡΡΡ Π½Π° ΠΌΠΎΠΉ Π΄ΠΎΠΊΠ»Π°Π΄, Π²Π°ΠΌ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΡΠ°ΡΡ ΡΡΡΠΎΠΌ Π² ΡΡΠ±Π±ΠΎΡΡ ΠΈ Π½Π΅ ΠΎΠΏΠΎΠ·Π΄Π°ΡΡ ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±Π΅ΠΉΠ΄ΠΆΠ°. Π― Π² Π²Π°Ρ Π²Π΅ΡΡ ))
#official
ΠΠΈΠ½ΡΡΠΊΠ° 3d-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
Π Π΅Π±ΡΡΠ° ΠΈΠ· Iridi ΠΏΡΠΈΡΠ»Π°Π»ΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΡΡΡΠ° ΠΠ΅ΠΉΡΠ° (ΠΠΈΡΠ°?) Ρ ΠΎΠ±Π»ΠΎΠΆΠΊΠΈ ΠΌΠΎΠ΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.
ΠΡΠ»ΠΎΠΆΠΈΠ» Π½Π° boosty Π² Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΡΠΈΡΡΠΎ ΡΡΠΎΠ±Ρ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅ ΠΊ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠ½ΠΈΠΆΠΊΠ΅.
https://boosty.to/cpp_lects_rus/posts/7f9999a9-4249-4538-9ddb-40b9338fe40f
#boosty #cppbook
ΠΡΠ»ΠΎΠΆΠΈΠ» ΠΏΠ΅ΡΠ²ΡΡ Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ ΠΊΠΎΡΡΡΠΈΠ½Π°ΠΌ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
https://youtu.be/wmrW6AkRo3c
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ°: ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Π° ΠΈ ΡΠ΅ΠΌ ΠΎΠ½Π° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ thread routine, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ: ΡΡΠ΅ΠΊΠΎΠ²ΡΠ΅ ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ (stackless), Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ ΠΈ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ ΠΈ Ρ.Π΄. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ Π»Π΅ΠΊΡΠΈΠΈ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ ΠΊΠΎΡΡΡΠΈΠ½ Π² C++20/23. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΡΡΠΈ ΠΊΠΎ-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ promise_type, coroutine_handle, awaiters ΠΈ ΠΈΡ
ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ. ΠΠ° ΠΏΡΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π»Π΅ΠΊΡΠΈΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΡΡΠΎΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Π½ΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ -- Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΈΠ²Π½ΡΠ΅, Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ Π² ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅Π»ΡΡ
. ΠΠΎΠ³Π΄Π° ΠΎΡΠ½ΠΎΠ²Ρ ΡΡΠ°Π½ΡΡ ΡΡΠ½Ρ, ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²Π΅ΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π· awaiters ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ -- ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ±ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΊΠΎΡΡΡΠΈΠ½ Π½Π° Π΅Π΄ΠΈΠ½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ co_await ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ.
00:00 Introduction. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ thread routines.
10:11 Π‘ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΈΡ
ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. Stackful- ΠΈ stackless-ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² C++.
15:41 ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΡ Π² Python ΠΈ C++23.
22:10 ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠΎ-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ.
27:25 ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ promise_type ΠΈ Hello World.
36:50 ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ.
45:00 Range-based-ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΡ.
50:40 ΠΠ΅ΡΠ°Π»ΠΈ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎ-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ². Awaiters.
56:23 Case study: ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
01:05:42 ΠΠΏΠ΅ΡΠ°ΡΠΎΡ co_await, Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ.
#cpp_postgraduate
Π‘ΡΡΠΈΠΌ Π½Π° Boosty ΡΠΊΠΎΡΠΎ ΠΏΠΎΠ΄ΡΡΠ±Π°Ρ. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π·Π°ΠΏΠΈΡΡ.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ΡΡ:
https://boosty.to/cpp_lects_rus/streams/video_stream
#official #boosty
ΠΡΠ»ΠΎΠΆΠΈΠ» ΡΡΠ΅ΡΡΡ Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ Π°ΡΠΎΠΌΠΈΠΊΠ°ΠΌ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
https://youtu.be/h4k3z69aIMY
Π ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ Π»Π΅ΠΊΡΠΈΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ°ΡΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ lock-free ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
. ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΌΡ Ρ ΡΠ΅ΠΊΠ»Π°ΠΌΠ°ΡΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°Π·Π±ΠΈΡΠ°Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π°ΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡ
ΠΈ CAS Π»ΠΎΠΌΠ°ΡΡΡΡ, ΠΈ Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ°Π»Π΅Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π²Π΅Π΄Π΅Π½Ρ Π² ΡΡΠ°Π½Π΄Π°ΡΡ C++26: RCU ΠΈ hazard pointers. ΠΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π΄Π°ΡΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ
ΠΎΠ΄Ρ Π²Π½ΠΎΡΡΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΡΠΈΡΡΡΠΏΠ°Π΅ΠΌ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ lock-free ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
. Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ unbounded ΡΡΠ΅ΠΊΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ hazard pointers. ΠΠ°ΡΠ΅ΠΌ bounded MPMC ΡΡΠ΅ΠΊ, Π³Π΄Π΅ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ: ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ABA. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈ ΠΊΠ°ΠΊ Ρ Π½ΠΈΠΌΠΈ Π±ΠΎΡΠΎΡΡΡΡ. Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ lock-free MPMC ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌ Π²Π»ΠΈΡΠ½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΎΠ².
00:00 ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΠΊΠ»Π°ΠΌΠ°ΡΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
07:03 ΠΠ΄Π΅Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠ³ΠΎ shared_ptr ΠΈ Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
11:05 Π Π΅ΡΠ΅Π½ΠΈΡ Π² C++26: RCU.
23:01 Π Π΅ΡΠ΅Π½ΠΈΡ Π² C++26: Hazard pointers.
31:20 Lock-free unbounded stack Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ hazard pointers.
35:45 Lock-free bounded MPMC stack: ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ.
42:42 ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ABA ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
54:40 Lock-free bounded MPMC queue, Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΈΠ½Π³ ΠΈ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°.
#cpp_postgraduate
ΠΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΠΎΡΡΡΡΠ½ΡΠΉ ΡΡΡΠΈΠΌ Π½Π° Π±ΡΡΡΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ 3 ΠΌΠ°Ρ Π² 19 ΡΠ°ΡΠΎΠ² ΠΏΠΎ ΠΠΎΡΠΊΠ²Π΅.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅:
* ΠΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ°ΠΊΡΡ ΠΏΡΠΎ ΠΌΠΎΠ΅Π³ΠΎ Π½Π΅ΡΠΎΡΡΠΎΡΠ²ΡΠ΅Π³ΠΎΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΠ³ΠΎΡΡ.
* ΠΠ°ΠΊ ΠΌΠ΅Π½Ρ ΡΠ°Π·Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°Ρ
.
* ΠΠ°ΡΠ΅ΠΌ Π±ΡΠ» ΠΎΠΏΡΠΎΡ ΠΏΡΠΎ ΡΡΠΎΠ»Ρ.
* ΠΠΎΠ³Π΄Π° Π½ΠΎΠ²ΡΠ΅ Π³Π»Π°Π²Ρ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΏΠΎΡΠ΅ΠΌΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°.
* Π ΡΠ°ΠΊΠΆΠ΅ Π»ΡΠ±ΡΠ΅ Π²Π°ΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΊΠΈΠ΄Π°ΡΡ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ: https://www.donationalerts.com/r/cpp_lects_rus
P. S. ΠΠ°ΡΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠΎΠ΅ΠΉ ΠΏΡΠΎΡΠ²Π΅ΡΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΠ΅Π½Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠΈΠ²ΠΈΡΡΠ΅Ρ: https://boosty.to/cpp_lects_rus
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π΄Π»Ρ ΡΡΠ°ΡΡΠΈΡ Π² ΡΡΡΠΈΠΌΠ΅ Π²ΡΠ΅Π³ΠΎ-ΡΠΎ 128 ΡΡΠ±Π»Π΅ΠΉ. ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΊΡΠΎ Π½Π° ΡΡΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π΄Π΅Π½ΡΠ³ΠΈ ))
#official #boosty
Π£ Π²Π°Ρ Π² ΠΎΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠ°Ρ Π΄Π»ΠΈΠ½Π° Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°? ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ ΡΡΠΎ Ρ ΡΡΠΎΠ»Π° ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: Π΄Π»ΠΈΠ½Π°, Π²ΡΡΠΎΡΠ° ΠΈ Π³Π»ΡΠ±ΠΈΠ½Π°. ΠΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ ΠΈΠ· Π΄ΠΎΠΌΠ° ΠΈΠ»ΠΈ ΠΈΠ· ΠΊΠΎΠ²ΠΎΡΠΊΠΈΠ½Π³Π°, ΡΠΎΠΆΠ΅ ΡΠΎΠΉΠ΄ΡΡ.
ΠΡΠ»ΠΎΠΆΠΈΠ» Π²ΡΠΎΡΡΡ Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ Π°ΡΠΎΠΌΠΈΠΊΠ°ΠΌ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
https://youtu.be/hikc1u-zOhQ
ΠΠΎ Π²ΡΠΎΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΠΏΠΎ Π°ΡΠΎΠΌΠΈΠΊΠ°ΠΌ ΠΌΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΡΡ
ΠΏΠ°ΠΌΡΡΠΈ Π² C++ ΠΈ Π½Π° ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠΎΠΎΡΠ½ΠΎΡΡΡΡΡ Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΠΎΠΉ. ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΠ΅, happens-before ΠΈ ΠΎ ΡΠΎΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ Π±Π΅Π· ΡΡΠΎΠ³ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π°ΡΠΎΠΌΠΈΠΊΠΎΠ² ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ relaxed Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ ΡΡΡΠ΅ΠΊΡΠ°ΠΌ ΠΈ Π΄Π°ΠΆΠ΅ UB, Π° ΡΠ°ΠΊΠΆΠ΅ Π³Π΄Π΅ ΠΎΠ½ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½. ΠΠ΅ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π±Π°ΡΡΠ΅ΡΡ ΠΏΠ°ΠΌΡΡΠΈ -- ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ Π°ΡΠΎΠΌΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠΆΠ΅Π»Π΅Π΅, ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΈ ΠΊΠ°ΠΊ Π°ΡΠΎΠΌΠΈΠΊΠΈ Π² C++ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΡΡ Ρ ΠΈΠ½Π»Π°ΠΉΠ½-Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠΎΠΌ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ Ρ "ΡΠ΅ΠΎΡΠΈΠ΅ΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ" ΠΈ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈ Π½Π΅ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
Timeline
00:00 ΠΠ°ΡΠ°Π»ΠΎ. ΠΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ²ΡΡΠ΄Ρ.
09:15 ΠΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π² Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΠ΅.
15:40 ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ "happens after / before" Π² C++ ΠΈ Π΅Π³ΠΎ ΠΊΠΎΡΠ½ΠΈ.
21:05 ΠΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π°ΡΠΎΠΌΠΈΠΊΠΎΠ² Π² C++. ΠΠΎΠ³Π΄Π° relaxed Π²Π΅Π΄ΡΡ ΠΊ UB.
29:09 ΠΠ°ΡΡΠ΅ΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ
36:25 Π‘ΠΎΡΠ΅Π²Π½ΡΠ΅ΠΌΡΡ Ρ ΠΈΠ½Π»Π°ΠΉΠ½-Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠΎΠΌ.
41:12 Π’Π΅ΠΎΡΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
47:33 ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎ Multithread COW Disease, Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ° ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅.
#cpp_postgraduate
Π‘ΡΠ΅Π·Π΄ΠΈΠ» Π² ΠΠΈΠΆΠ½ΠΈΠΉ Π’Π°Π³ΠΈΠ» ΠΏΠΎ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Iridi Ρ Π»Π΅ΠΊΡΠΈΠ΅ΠΉ ΠΏΠΎ RAII. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π°Π» ΡΡΠΎ-ΡΠΎ ΠΈ ΠΏΡΠΎ Π½ΠΎΠ²ΡΠ΅ RAII-ΠΎΠ±ΡΡΡΠΊΠΈ Π² C++26: std::polymorphic ΠΈ std::indirect. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ Π²Π΅Π»ΠΎΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°ΠΏΠΈΡΡ ΡΠΊΡΠ°Π½Π° Π²ΡΠΊΠ»Π°Π΄ΡΠ²Π°Ρ Π½Π° ΠΏΡΠ°Π²Π°Ρ
ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊΠ°.
https://rutube.ru/video/491df36a93e245aaefa116026cf775ef
Timeline:
00:00 ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠ½Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ².
07:58 ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ ΠΈ ΡΡΠ΄ ΡΠΌΠ΅ΠΆΠ½ΡΡ
Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠΉ.
14:23 Big-5 ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΠ·ΠΎΠ±ΡΠ΅ΡΠ°Π΅ΠΌ RAII.
25:15 RAII ΠΈ Value-ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°. ΠΠΎΡΠΈΠ²ΠΈΡΡΠ΅ΠΌ std::polymorphic.
37:43 ΠΠ΅ΡΠ°Π»ΠΈ std::polymorphic ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΠΊΡΡΡΠΎΠΉ.
43:20 ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Π½Π΅ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌΡΡ
ΡΠΈΠΏΠ°Ρ
. RVO.
50:03 ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ²Π΅ΡΡ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ unique pointers.
55:26 PImpl ΠΈ ΠΌΠΎΡΠΈΠ²Π°ΡΠΈΡ Π΄Π»Ρ std::indirect.
58:32 Shared pointers ΠΈ ΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
01:03:25 ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅: ΠΏΠ°ΡΠ° ΡΠ»ΠΎΠ² ΠΏΡΠΎ ΠΈΠ½ΡΡΡΠ·ΠΈΠ²Π½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°, ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠ°ΡΠ° Π²ΠΎΠΏΡΠΎΡΠΎΠ².
Π‘Π»Π°ΠΉΠ΄Ρ: https://sourceforge.net/projects/cpp-lects-rus/files/conference-talks/raii.pdf/download
ΠΠΎΠ»ΡΡΠΈΠ» Π² ΠΏΠΎΠ΄Π°ΡΠΎΠΊ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΏΠ»ΡΡ ΡΠΎΠ»ΡΡΠΎΠ²ΠΊΡ (Ρ Π² Π½Π΅ΠΉ Π½Π° ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ) ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΡ ΡΡΠ°ΡΡΡΡΠΊΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΡΡΠ½ΡΡ
ΠΌΠ°ΡΡΠ΅ΡΠΎΠ².
ΠΠΎΠ²ΠΎΡΡΡ ΠΎ ΡΠΎΠ±ΡΡΠΈΠΈ Π½Π° ΠΊΠ°Π½Π°Π»Π΅ Iridi: https://t.me/iRidiummobileRu/2344
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΠΠ°ΡΠ°ΡΡ ΠΠΈΠ»ΡΠ·Π΅ΡΠ΄ΠΈΠ½ΠΎΠ²Ρ Π·Π° Π΅Π³ΠΎ ΡΡΠΈΠ»ΠΈΡ Π² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠΉ ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ ΠΈ Π·Π° ΠΊΠΎΡΠΎΡΠΊΡΡ ΡΠΊΡΠΊΡΡΡΠΈΡ ΠΏΠΎ Π’Π°Π³ΠΈΠ»Ρ ΠΏΠΎΡΠ»Π΅ Π»Π΅ΠΊΡΠΈΠΈ.
P. S. Π’Π°ΠΊΠΆΠ΅ Π½Π΅Π΄Π°Π²Π½ΠΎ Π±ΡΠ» Π² ΠΠΎΡΠΊΠ°Ρ-ΠΠ»Π΅ Π½ΠΎ ΡΠ°ΠΌ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠΆ Ρ
ΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΠΈΡΡ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΡΡ Π²ΡΠ»ΠΎΠΆΡ ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ΄ΡΡ Π²ΡΠ΅ΠΌΡ Π΅Ρ Π²ΡΠΊΠ»Π°Π΄ΠΊΠΈ Π½Π° youtube.
P. P. S. ΠΡΠΈΠ±Π»ΠΈΠΆΠ°Π΅ΡΡΡ Π»Π΅ΡΠΎ β Π»ΡΡΡΠ°Ρ ΠΏΠΎΡΠ° ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ·Π²Π°ΡΡ Π² Π²Π°Ρ Π³ΠΎΡΠΎΠ΄, Π² Π²Π°Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ ΠΈΠ»ΠΈ Π² ΠΎΡΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Ρ Π»Π΅ΠΊΡΠΈΠ΅ΠΉ, Π½Π° Π²ΡΡΡΠ΅ΡΡ Ρ ΡΠΈΡΠ°ΡΠ΅Π»ΡΠΌΠΈ ΠΈ Ρ. ΠΏ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΏΠΎΠ΅Π·Π΄ΠΊΡ (Π½Π°ΠΉΡΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡΡΡ Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ΅ΠΉ, ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ), ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠ½Π΅ Π² Π»Ρ.
#official #author_event
ΠΡΠ»ΠΎΠΆΠΈΠ» ΠΏΠ΅ΡΠ²ΡΡ Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ Π°ΡΠΎΠΌΠΈΠΊΠ°ΠΌ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
https://youtu.be/dRlOwdj8BHI
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΠΌΡ Π½Π°ΡΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ ΠΊ Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ lock-free ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠ΅ΡΡΡΠ·Π½Π°Ρ Π±Π°Π·Π° Π² Π°ΡΠΎΠΌΠΈΠΊΠ°Ρ
C++. ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π² Π½Π°ΡΠ°Π»Π΅ Π»Π΅ΠΊΡΠΈΠΈ, -- ΡΡΠΎ ΠΌΠΎΡΠΈΠ²ΠΈΡΡΠ΅ΠΌ Π°ΡΠΎΠΌΠΈΠΊ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° shared_ptr ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΈΠ½Π³. ΠΠ°Π»Π΅Π΅, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ, ΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΡΠΌ ΠΈΠ΄ΠΈΠΎΠΌΡ Compare-And-Swap (CAS). Π¦Π΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ Π»Π΅ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ lock-freeness. ΠΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Π΅ΡΠ½ΡΠΌΡΡ ΠΊ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½ΡΠΈΠΏΠ°ΡΡΠ΅ΡΠ½Π°ΠΌ, Π²ΡΠΎΠ΄Π΅ double-checked locking, ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡ
ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΡΠΎΠΌΠΈΠΊΠΎΠ². ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ thread-local ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ Π»Π΅ΠΊΡΠΈΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΠ΅ΠΌΠ΅ -- API races. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°ΡΠΎΠΌΠΈΠΊΠΎΠ², ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΡ
ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΠ°ΠΊΠΎΠ½ΡΠΈΠΌ ΠΌΡ ΡΠ°Π·Π±ΠΎΡΠΎΠΌ ΡΠΈΡΡΠ°ΡΠΈΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
Timeline
00:00 Intro. ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈ ΡΠ½ΠΎΠ²Π° data race.
04:30 ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°. ΠΠ΅Π½ΡΠΌΠ°ΡΠΊΠΈΠ½Π³ atomic vs mutex.
10:25 ΠΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΊΠΎΠΉ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠΌ.
17:30 ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ Π°ΠΎΠΌΠΈΠΊΠ°. ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ Π΄Π»Ρ CAS.
28:24 ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ lock-freeness ΠΈ ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ.
38:45 Π‘Π½ΠΎΠ²Π° Π°Π½ΡΠΈΠΏΠ°ΡΡΠ΅ΡΠ½ DCL. Π§ΠΈΠ½ΠΈΠΌ ΡΠ΅ΡΠ΅Π· Π°ΡΠΎΠΌΠΈΠΊΠΈ.
45:10 Π‘ΠΈΠ½Π³Π»ΡΠΎΠ½ ΠΠ°ΠΉΠ΅ΡΡΠ°: ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π²ΠΎΠΊΡΡΠ³ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
. Thread local ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
50:15 Π‘Π½ΠΎΠ²Π° Copy On Write: ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΏΡΠΎΡΡΠΎΠΌ COW ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π΅.
56:57 ΠΠΎΠΈΡΠΊ API Races Π² ΠΊΠΎΠ΄Π΅, Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΌ Π°ΡΠΎΠΌΠΈΠΊΠΈ.
01:04:30 ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° API races.
01:08:46 ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅: livelocks ΠΈ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°.
#cpp_postgraduate
ΠΠΈΠ½ΡΡΠΊΠ° Π΄ΡΡΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΈΠ°ΡΠ°.
Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ YADRO ΡΡΠ°ΡΡΠΎΠ²Π°Π» Π½Π°Π±ΠΎΡ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ°ΠΆΠΈΡΠΎΠ²ΠΊΠΈ ΠΠΌΠΏΡΠ»ΡΡ. Π ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ ΠΎΡΠΊΡΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ 30 Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ.
Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅:
* Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° C++.
* C, ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
* Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
* ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ.
* ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ Π΅ΡΡ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠ΄Π°Π»ΡΠ½ΠΊΠ° ΠΈΠ»ΠΈ Π³ΠΈΠ±ΡΠΈΠ΄.
ΠΠ΅ΡΠ°Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Π½Π° Π²Π΅Π±ΠΈΠ½Π°ΡΠ°Ρ
16 ΠΈ 23 Π°ΠΏΡΠ΅Π»Ρ. Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΡΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π° ΡΠ°ΠΉΡΠ΅.
https://edu.yadro.com/impulse
#official
ΠΡΠ»ΠΎΠΆΠΈΠ» Π»Π΅ΠΊΡΠΈΡ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌ ΠΎΡΠ΅ΡΠ΅Π΄ΡΠΌ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
https://www.youtube.com/watch?v=86aNZgS9SOU
Π ΡΡΠΎΠΉ Π»Π΅ΠΊΡΠΈΠΈ ΠΌΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ lock-based ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π² C++ ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΠΌ ΠΈΡΠΎΠ³ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° ΠΌΡΡΡΠ΅ΠΊΡΠ°Ρ
ΠΈ condition variables. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ producerβconsumer ΠΏΠ°ΡΡΠ΅ΡΠ½, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ MPMC-ΡΡΡΡΠΊΡΡΡΡ (ΡΡΠ΅ΠΊ ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Ρ), ΡΠ°Π·Π±Π΅ΡΡΠΌ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°ΠΊΠΈΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΈΡ
ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ Π΄Π°ΠΆΠ΅ "ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅" Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ Π·Π°Π΄Π°Ρ. ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ°ΠΌ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ: future/promise, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, packaged_task ΠΈ std::jthread. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΡΠΉ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ΄. Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π²ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ ΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ.
Timeline
00:00 ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΌΡΡΡΠ΅ΠΊΡΠ°.
06:33 Thread-Safe Lock-Based Bounded MPMC Stack.
11:01 ΠΠ·ΠΌΠ΅ΡΡΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
18:00 ΠΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΠΎΡΠΈΠΊΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: Wake and Done.
22:30 Thread-Safe Lock-Based Bounded MPMC Queue.
29:00 ΠΡΠΈΡΠΈΠΊΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°: ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ΅ΡΡΡΡ Π·Π°Π΄Π°ΡΠΈ.
33:46 Π§ΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ?
36:52 ΠΠΎΠ·Π²ΡΠ°Ρ Π΄Π°Π½Π½ΡΡ
ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° ΠΈ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ future/promise.
42:45 ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π² ΠΏΠΎΡΠΎΠΊΠ°Ρ
.
46:43 Packaged Tasks and Joinable Threads.
51:28 ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±Π°ΡΡΠ΅ΡΠ°.
57:46 MPMC Queue Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ.
01:03:26 ΠΠ°Π΄Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ.
#cpp_postgraduate
