uz
Feedback
C++ and other lectures

C++ and other lectures

Kanalga Telegram’da oβ€˜tish

Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» Π² Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ: Ρ‚ΡƒΡ‚ Π±ΡƒΠ΄ΡƒΡ‚ анонсы ΠΈ ссылки Π½Π° Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΈ стримы. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Ρƒ: @Tilir Boosty Π°Π²Ρ‚ΠΎΡ€Π°: https://boosty.to/cpp_lects_rus

Ko'proq ko'rsatish
9 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

НС ΠΌΠΎΠ³Ρƒ Π½Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ самым вСсСлым, Π½Π° ΠΌΠΎΠΉ взгляд, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΈΠ· Π΄ΠΎΠΊΠ»Π°Π΄Π° Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠ³ΠΎ ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚ΠΈΠ½Π° Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ΠΎΠ²Π°. Он Π΄Π΅Π»Π°Π» анонс Π΄ΠΎΠΊΠ»Π°Π΄Π° Π² своСм 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 часов ΠΏΠΎ МосквС. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅: * НовыС интСрСсныС Ρ„Π°ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΎ ΠΌΠΎΠ΅Π³ΠΎ нСсосто
ΠžΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π½Ρ‹ΠΉ стрим Π½Π° бусти ΠΏΡ€ΠΎΠ²Π΅Π΄Ρƒ 3 мая Π² 19 часов ΠΏΠΎ МосквС. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅: * НовыС интСрСсныС Ρ„Π°ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΎ ΠΌΠΎΠ΅Π³ΠΎ Π½Π΅ΡΠΎΡΡ‚ΠΎΡΠ²ΡˆΠ΅Π³ΠΎΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Π˜Π³ΠΎΡ€Ρ. * Как мСня Ρ€Π°Π·Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°Ρ…. * Π—Π°Ρ‡Π΅ΠΌ Π±Ρ‹Π» опрос ΠΏΡ€ΠΎ столы. * Когда Π½ΠΎΠ²Ρ‹Π΅ Π³Π»Π°Π²Ρ‹ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°. * А Ρ‚Π°ΠΊΠΆΠ΅ Π»ΡŽΠ±Ρ‹Π΅ ваши вопросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΊΠΈΠ΄Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ сСйчас: https://www.donationalerts.com/r/cpp_lects_rus P. S. Π’Π°ΡˆΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠΎΠ΅ΠΉ ΠΏΡ€ΠΎΡΠ²Π΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ мСня ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚: https://boosty.to/cpp_lects_rus Минимальная подписка для участия Π² стримС всСго-Ρ‚ΠΎ 128 Ρ€ΡƒΠ±Π»Π΅ΠΉ. МнС каТСтся для всСх ΠΊΡ‚ΠΎ Π½Π° этом ΠΊΠ°Π½Π°Π»Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ дСньги )) #official #boosty

Π£ вас Π² офисС какая Π΄Π»ΠΈΠ½Π° Ρƒ вашСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола? ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ Ρƒ стола Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: Π΄Π»ΠΈΠ½Π°, высота ΠΈ Π³Π»ΡƒΠ±ΠΈΠ½Π°. Если Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ ΠΈΠ· Π΄ΠΎΠΌΠ° ΠΈΠ»ΠΈ ΠΈΠ· ΠΊΠΎΠ²ΠΎΡ€ΠΊΠΈΠ½Π³Π°, Ρ‚ΠΎΠΆΠ΅ сойдёт.
Anonymous voting

Π’Ρ‹Π»ΠΎΠΆΠΈΠ» Π²Ρ‚ΠΎΡ€ΡƒΡŽ Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΏΠΎ Π°Ρ‚ΠΎΠΌΠΈΠΊΠ°ΠΌ Π½Π° английском языкС. 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-ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ
+4
БъСздил Π² НиТний Π’Π°Π³ΠΈΠ» ΠΏΠΎ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ 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