Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Ρ‡Ρ‚ΠΎ это Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Β» (ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅) ΠΏΠΎ использованию ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«ΠΊΠΎΠΌΠ°Π½Π΄Π°Β», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для описания Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… конструкций языка программирования (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΉ компилятору ΠΈΠ»ΠΈ ассСмблСру особСнностСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈ компиляции).

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π―Π·Ρ‹ΠΊ ассСмблСра

Π’ языкС ассСмблСра Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ цСлСвая срСда, ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π³Ρ€Π°Π½ΠΈΡ† ΠΌΠ΅ΠΆΠ΄Ρƒ сСкциями ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. НапримСр, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Β«ALIGNΒ», которая вставляСт Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство Π±Π°ΠΉΡ‚ для выравнивания строк, часто упоминаСмая ΠΊΠ°ΠΊ Β«Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Β», ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ Ρ‚ΠΎΠΌΡƒ Ρ„Π°ΠΊΡ‚Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° совпадаСт с частями конструкций Π² Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π΅.

ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Π‘ΠΈ

БинтаксичСскиС конструкции, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° прСпроцСссорныС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ языка Π‘ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ #region Π² языкС C#, Ρ‚Π°ΠΊΠΆΠ΅ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Β«Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈΒ», хотя Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… случаях стадии ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСпроцСссором ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ.

Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках высокого уровня

Π’ языкС Ada Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ компилятора Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π°Π³ΠΌΠ°ΠΌΠΈ (сокращСниС ΠΎΡ‚ Β«pragmatic informationΒ» («полСзная информация»)).

Π’ ПаскалС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ коммСнтариями ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ синтаксису ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π’ ПаскалС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ β€” это ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ символом ΡƒΠΊΠ°Π·Π°Π½ Π·Π½Π°ΠΊ Π΄ΠΎΠ»Π»Π°Ρ€Π°; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #include «file» языка Π‘ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ <$I "file">.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

ПолСзноС

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)» Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… словарях:

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° (значСния) β€” Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°: Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΎΠ±Ρ‰Π΅Π΅ руководящСС ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅, Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ Π²Ρ‹ΡΡˆΠΈΠΌ ΠΎΡ€Π³Π°Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½Ρ‘Π½Π½ΠΎΠΌΡƒ. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Ρ‚ΠΈΠΏ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°ΠΊΡ‚Π° Π•Π‘. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ компилятору Π½Π° особСнности обработки… … ВикипСдия

НаслСдованиС (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ?: Найти ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ сносок ссылки Π½Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Π΅ источники, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ написанноС. Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½ … ВикипСдия

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ конструктор класса (ΠΎΡ‚ Π°Π½Π³Π». constructor, ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ ctor) ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ инструкций, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.… … ВикипСдия

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΡ‘Π½ (Π°Π½Π³Π». namespace) Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ мноТСство, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ подразумСваСтся модСль, абстрактноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΠ»ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, созданноС для логичСской Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ … ВикипСдия

Условная компиляция β€” Π’ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, прСпроцСссор это ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Π²Ρ…ΠΎΠ΄Π΅, ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‰Π°Ρ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Π²Ρ…ΠΎΠ΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ компилятор. О Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ прСпроцСссора говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ находятся в… … ВикипСдия

ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ (значСния). ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ это ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‰Π°Ρ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Π²Ρ…ΠΎΠ΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, компилятора). О Π΄Π°Π½Π½Ρ‹Ρ… на… … ВикипСдия

C++ β€” Π£ этого Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ значСния, см. C. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅: Π‘ΠΈ (язык программирования) C++ Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ°: ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅, ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ΅, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅, ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π’ΠΈΠΏ исполнСния: ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Появился Π² … ВикипСдия

Π‘++ β€” Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅: Π‘ΠΈ (язык программирования) C++ Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ°: ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅, ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½ΠΎΠ΅, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅, ΠΌΠ΅Ρ‚Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π’ΠΈΠΏ исполнСния: ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Появился Π²: 1985 Π³. Автор(Ρ‹): Π‘ΡŒΡ‘Ρ€Π½ Бтрауструп … ВикипСдия

Objective-C β€” Класс языка: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ: рСфлСксивно ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Появился Π²: 1986 Автор(Ρ‹): Π‘Ρ€Π΅Π΄ Кокс Випизация Π΄Π°Π½Π½Ρ‹Ρ…: нСстрогая, статичСская / динамичСская … ВикипСдия

JSP β€” Π‘Ρ‚ΠΈΠ»ΡŒ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ нСэнциклопСдичСн ΠΈΠ»ΠΈ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΡ‹ русского языка. Π‘Ρ‚Π°Ρ‚ΡŒΡŽ слСдуСт ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ согласно стилистичСским ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ. JSP (JavaServer Pages) тСхнология, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Π΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ содСрТимоС, котороС… … ВикипСдия

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£Ρ€ΠΎΠΊ β„–22. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ прСпроцСссора

Обновл. 11 БСн 2021 |

ΠŸΡ€Π΅ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая выполняСтся ΠΏΠ΅Ρ€Π΅Π΄ компиляциСй. ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, прСпроцСссор просматриваСт ΠΊΠΎΠ΄ свСрху Π²Π½ΠΈΠ·, Ρ„Π°ΠΉΠ» Π·Π° Ρ„Π°ΠΉΠ»ΠΎΠΌ, Π² поискС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ². Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символа # ΠΈ НЕ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой. Π•ΡΡ‚ΡŒ нСсколько Ρ‚ΠΈΠΏΠΎΠ² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассмотрим Π½ΠΈΠΆΠ΅.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #include

Π’Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ #include Π² дСйствии. Когда Π²Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ #include, прСпроцСссор ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ содСрТимоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» сразу послС строки с #include. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ использовании ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… объявлСний Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ) сразу Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #include ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹:

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° #define

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ #define ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания макросов. ΠœΠ°ΠΊΡ€ΠΎΡ β€” это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ опрСдСляСт ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π•ΡΡ‚ΡŒ Π΄Π²Π° основных Ρ‚ΠΈΠΏΠ° макросов: макросы-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ макросы-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

ΠœΠ°ΠΊΡ€ΠΎΡΡ‹-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ… ΠΆΠ΅ цСлях. ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ сСйчас ΠΈΡ… ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… использованиС, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, считаСтся опасным, ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ всё, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простой (Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠœΠ°ΠΊΡ€ΠΎΡΡ‹-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… способов:

#define ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ тСкст_Π·Π°ΠΌΠ΅Π½Π°

ΠœΠ°ΠΊΡ€ΠΎΡΡ‹-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с тСкст_Π·Π°ΠΌΠ΅Π½Π°

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

2. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ основаны Π½Π° #pragma Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ…, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² стандартах C ΠΈ C++. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ API OpenMP C ΠΈ C++, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ позволяСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ компилятора OpenMP.

Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ 2,1

Бинтаксис Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ OpenMP Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ опрСдСляСтся Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ CΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° OpenMP примСняСтся Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ инструкции, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ структурированным Π±Π»ΠΎΠΊΠΎΠΌ.

2,2. Условная компиляция

Если поставщики ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для OpenMP, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ макросы.

2,3. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ конструкция

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° опрСдСляСт ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, которая являСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ конструкциСй, которая Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…:

Когда ΠΏΠΎΡ‚ΠΎΠΊ получаСтся Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² создаСтся, Ссли выполняСтся ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаСв.

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊ прСвращаСтся Π² Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ° 0, Π° всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ этот Ρ€Π΅Π³ΠΈΠΎΠ½ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ if выраТСния Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ сСриализуСтся.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ порядку. Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, условиС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ:

Если num_threads ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ имССтся, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ цСлочислСнного выраТСния Ρ€Π°Π²Π½ΠΎ количСству Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Если omp_set_num_threads Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° функция Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² послСднСм Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ β€” это число Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Если пСрСмСнная срСды OMP_NUM_THREADS ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ срСды Ρ€Π°Π²Π½ΠΎ количСству Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Если Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‚ΠΎ число Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² опрСдСляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

Если num_threads ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ имССтся, ΠΎΠ½ΠΎ замСняСт количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… omp_set_num_threads Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΠ»ΠΈ OMP_NUM_THREADS ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ срСды Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ примСняСтся. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ области ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ² Π½Π΅ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

Число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Ρ‚Π°ΠΊΠΆΠ΅ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π»ΠΈ ДинамичСская коррСкция числа ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Если динамичСская ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ΅ число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ. Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° динамичСская настройка, Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ΅ число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² β€” это максимальноС число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ.

Если Π²ΠΎ врСмя динамичСской ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ количСства ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π° число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ систСма Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ опрСдСляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. РСализация ΠΌΠΎΠΆΠ΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области.

omp_set_dynamic Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ OMP_DYNAMIC ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ срСды ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ динамичСской ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ числа ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Число физичСских процСссоров, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… фактичСски Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² любой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, опрСдСляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ПослС создания число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ остаСтся постоянным Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π»ΠΈΠ±ΠΎ автоматичСски систСмой Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ, содСрТащиСся Π² динамичСской экстСнтС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Π΅ Π²Π½Π΅ лСксичСского экстСнта ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ потСрянными Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ.

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области Π΅ΡΡ‚ΡŒ нСявный Π±Π°Ρ€ΡŒΠ΅Ρ€. Волько Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области.

К parallel Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

Π’ if Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Он Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ if ΠΈΠ»ΠΈ num_threads Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

throw Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области Π΄ΠΎΠ»ΠΆΠ½ΠΎ привСсти ΠΊ возобновлСнию выполнСния Π² динамичСской области Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ структурированного Π±Π»ΠΎΠΊΠ° ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½ΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π΄Π°Π» ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

num_threads Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. num_threads Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ вычисляСтся Π²Π½Π΅ контСкста ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ вычислСния if num_threads ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Ρ‹Π΅ ссылки

2,4 конструкции совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ совмСстного использования распрСдСляСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ инструкции срСди Ρ‡Π»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ встрСчаСтся. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ совмСстного использования Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, ΠΈ Π½Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π±Π°Ρ€ΡŒΠ΅Ρ€Π° Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ конструкций ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² совмСстного использования barrier Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² Π³Ρ€ΡƒΠΏΠΏΠ΅.

OpenMP опрСдСляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ конструкции совмСстного использования, ΠΈ эти конструкции описаны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…:

2.4.1 для конструкции

for Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° опрСдСляСт ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ связанного Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ for Ρ†ΠΈΠΊΠ»Π° Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° привязана. Бинтаксис for конструкции выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…:

for Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ограничСния Π½Π° структуру ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ for Ρ†ΠΈΠΊΠ»Π°. Π’ частности, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ for Ρ†ΠΈΠΊΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ:

init-expr
Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

incr-expr
Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

логичСская опСрация
Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

Ρ„ΡƒΠ½Ρ‚ΠΎΠ², bΠΈ incr
Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹Π΅ цСлочислСнныС выраТСния Ρ†ΠΈΠΊΠ»Π°. Π’ΠΎ врСмя ΠΎΡ†Π΅Π½ΠΊΠΈ этих Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ синхронизация Π½Π΅ выполняСтся, поэтому всС вычислСнныС ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты приводят ΠΊ нСпрСдсказуСмым Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ.

schedule ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ for Ρ†ΠΈΠΊΠ»Π° дСлятся ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ выполняСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ chunk_size, Ссли ΠΎΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΌ цСлочислСнным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ†ΠΈΠΊΠ»Π° с ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π’ΠΎ врСмя вычислСния этого выраТСния синхронизация Π½Π΅ выполняСтся, поэтому всС вычислСнныС ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты приводят ΠΊ нСпрСдсказуСмым Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ. Π’ΠΈΠΏ расписания ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

Π’Π°Π±Π»ΠΈΡ†Π° 2-1: schedule значСния schedule прСдлоТСния

ΠŸΡ€ΠΈ отсутствии явно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ schedule прСдлоТСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ schedule опрСдСляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, совмСстимая с OpenMP, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ расписаниС для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚ΠΈΠΏ расписания Π² соотвСтствии с описанным Π²Ρ‹ΡˆΠ΅ описаниСм, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ Π² рСализациях ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° расписания для Ρ€Π°Π·Π½Ρ‹Ρ… компиляторов. Описания ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π±ΠΎΡ€Π° расписания, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ситуации.

ordered ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, Ссли ordered Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊ for конструкции.

Π’ ΠΊΠΎΠ½Ρ†Π΅ конструкции имССтся нСявный Π±Π°Ρ€ΡŒΠ΅Ρ€, for Если nowait Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

К for Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

for Π¦ΠΈΠΊΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ структурированным Π±Π»ΠΎΠΊΠΎΠΌ, ΠΈ, ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ break ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

ЗначСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ for Ρ†ΠΈΠΊΠ»Π°, связанного с for Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ для всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² Π³Ρ€ΡƒΠΏΠΏΠ΅.

for ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа со Π·Π½Π°ΠΊΠΎΠΌ.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния chunk_size Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ для всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Ρ‹Π΅ ссылки

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² 2.4.2

sections Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° опрСдСляСт Π½Π΅ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ конструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ распрСдСлСны ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» запускаСтся ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Бинтаксис sections Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…:

ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ€Π°Π·Π΄Π΅Π»Ρƒ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ section Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°, хотя section Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° являСтся Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°. section Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² лСксичСской области sections Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹. НСявный Π±Π°Ρ€ΡŒΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ†Π΅ sections конструкции, Ссли nowait Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½.

К sections Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

section Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ лСксичСского экстСнта sections Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Ρ‹Π΅ ссылки

2.4.3, Сдиная конструкция

single Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° опрСдСляСт ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ связанный структурированный Π±Π»ΠΎΠΊ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ (Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ). Бинтаксис single Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…:

БущСствуСт нСявноС Π±Π°Ρ€ΡŒΠ΅Ρ€ послС single конструкции, Ссли nowait Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

К single Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Ρ‹Π΅ ссылки

2,5. ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ конструкции ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ конструкции совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ β€” это сочСтания клавиш для указания ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области, которая ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ совмСстного использования. Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° этих Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° явному заданию parallel Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт ΠΎΠ΄Π½Π° конструкция совмСстного использования.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… описаны ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ конструкции ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ совмСстного использования.

2.5.1 ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ для конструкции

parallel for Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° являСтся ярлыком для parallel области, содСрТащСй Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ for Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ. Бинтаксис parallel for Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π­Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ всС прСдлоТСния parallel Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΈ for Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, ΠΊΡ€ΠΎΠΌΠ΅ nowait прСдлоТСния, с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ значСниями ΠΈ ограничСниями. Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° явному ΡƒΠΊΠ°Π·Π°Π½ΠΈΡŽ parallel Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт for Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Ρ‹Π΅ ссылки

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… сСкций 2.5.2

parallel sections Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° прСдоставляСт Ρ„ΠΎΡ€ΠΌΡƒ ярлыка для указания parallel области, которая содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ sections Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ. Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° явному ΡƒΠΊΠ°Π·Π°Π½ΠΈΡŽ parallel Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт sections Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°. Бинтаксис parallel sections Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… sections Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ ΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ nowait прСдлоТСния.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Ρ‹Π΅ ссылки

2,6. Π“Π»Π°Π²Π½Ρ‹Π΅ ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… описываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Главная конструкция 2.6.1

master Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° опрСдСляСт ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, которая Π·Π°Π΄Π°Π΅Ρ‚ структурированный Π±Π»ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Бинтаксис master Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ связанный структурированный Π±Π»ΠΎΠΊ. НСт ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π±Π°Ρ€ΡŒΠ΅Ρ€Π° для Π²Ρ…ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠΉ конструкции.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ конструкция 2.6.2

critical Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° опрСдСляСт ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, которая Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ связанного структурированного Π±Π»ΠΎΠΊΠ° Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ Π·Π° Ρ€Π°Π·. Бинтаксис critical Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΠΎΡ‚ΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Π² Π½Π°Ρ‡Π°Π»Π΅ критичСского Ρ€Π΅Π³ΠΈΠΎΠ½Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ критичСский Ρ€Π΅Π³ΠΈΠΎΠ½ (Π² любом мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ВсС Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ critical Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° 2.6.3 Π±Π°Ρ€ΡŒΠ΅Ρ€Π°

barrier Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° синхронизируСт всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, ΠΏΠΎΠΊΠ° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π½Π΅ Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°. Бинтаксис barrier Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с Π±Π°Ρ€ΡŒΠ΅Ρ€ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ инструкции послС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π±Π°Ρ€ΡŒΠ΅Ρ€Π° Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ barrier Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π½Π΅ содСрТит инструкции языка C Π² составС своСго синтаксиса, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния Π½Π° Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ см. Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π². Π­Ρ‚ΠΈ ограничСния ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

2.6.4 Атомарная конструкция

atomic Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ мСсто Π² памяти Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ возмоТности для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² записи. Бинтаксис atomic Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ выраТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌ:

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… выраТСниях:

x являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ lvalue со скалярным Ρ‚ΠΈΠΏΠΎΠΌ.

expr являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ с скалярным Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ Π½Π΅ ссылаСтся Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ x.

К atomic Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

2.6.5. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° flush

flush Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° (явная ΠΈΠ»ΠΈ подразумСваСмая) ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ «пСрСкрСстных ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Β», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ трСбуСтся рСализация, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ΅ прСдставлСниС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅) Π² памяти. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ вычислСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вычислСния Π΅Ρ‰Π΅ Π½Π΅ началися. НапримСр, компиляторы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ значСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· рСгистров Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ записи Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² записи Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· памяти.

Бинтаксис flush Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ синхронизации, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Ρ‚ΠΎ эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ спискС. Если ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ имССтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-спискС, сам ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ очищаСтся, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π½Π΅ подразумСваСтся, Ссли nowait имССтся ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ flush Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π½Π΅ подразумСваСтся для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов:

Бсылка, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°ΡΡΡ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с постоянным Ρ‚ΠΈΠΏΠΎΠΌ, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ сущСствовала flush Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ слСдования. Бсылка, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰Π°Ρ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с постоянным Ρ‚ΠΈΠΏΠΎΠΌ, Π²Π΅Π΄Π΅Ρ‚ сСбя Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ сущСствовала flush Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ flush Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π½Π΅ содСрТит инструкции языка C Π² составС своСго синтаксиса, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния Π½Π° Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ см. Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π². Π­Ρ‚ΠΈ ограничСния ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

К flush Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

2.6.6 упорядочСнная конструкция

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, ordered ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт Π·Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ, выполняСтся Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅. Бинтаксис ordered Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

К ordered Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

Π‘Ρ€Π΅Π΄Π° Π΄Π°Π½Π½Ρ‹Ρ… 2,7

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ прСдставлСна Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΈ нСсколько ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ для управлСния срСдой Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ врСмя выполнСния ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° threadprivate ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ области дСйствия Ρ„Π°ΠΉΠ»Π°, области видимости пространства ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… областСй видимости Π±Π»ΠΎΠΊΠ° Π±Ρ‹Π»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для ΠΏΠΎΡ‚ΠΎΠΊΠ°.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ… для управлСния ΠΎΠ±Ρ‰ΠΈΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π° протяТСнии ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… конструкций, описаны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 2.7.2.

2.7.1 threadprivate, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°

threadprivate Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΉ области Ρ„Π°ΠΉΠ»Π°, области видимости пространства ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ статичСской области видимости Π±Π»ΠΎΠΊΠ°, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² threadprivate Private, ΠΏΠΎΡ‚ΠΎΠΊΡƒ. variable-List β€” это Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ запятыми список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Бинтаксис threadprivate Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

КаТдая копия threadprivate ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ инициализируСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π² Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ссылки Π½Π° эту копию ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ способом (Ρ‚. Π΅. ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Π»Π°Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ исполнСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ссли Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ имССтся ссылка Π² явном ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ threadprivate ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° измСняСтся Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ссылки Π½Π° копию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ.

ПослС выполнСния ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области Π΄Π°Π½Π½Ρ‹Π΅ Π² threadprivate ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ динамичСских ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π±Ρ‹Π» ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈ число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ для всСх ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ².

К threadprivate Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

threadprivate Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… области видимости Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ опрСдСлСния ΠΈΠ»ΠΈ объявлСния ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ лСксичСской ΠΏΠ΅Ρ€Π΅Π΄ всСми ссылками Π½Π° Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² спискС.

КаТдая пСрСмСнная Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ List Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π² области Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² области Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ лСксичСски ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅.

threadprivate Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° для статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… области видимости Π±Π»ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² области видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π½Π΅ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ области. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ лСксичСской ΠΏΠ΅Ρ€Π΅Π΄ всСми ссылками Π½Π° Π»ΡŽΠ±Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² своСм спискС.

КаТдая пСрСмСнная Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-спискС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π² области видимости Π±Π»ΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ области, которая лСксичСски ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅. ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСцификатор класса хранСния static.

Если пСрСмСнная ΡƒΠΊΠ°Π·Π°Π½Π° Π² threadprivate Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ Π² ΠΎΠ΄Π½ΠΎΠΉ записи прСобразования, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π° Π² threadprivate Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ прСобразования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ объявлСн.

АдрСс threadprivate ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ являСтся константой адрСса.

threadprivate ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ ссылочный Ρ‚ΠΈΠΏ.

threadprivate ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ с Ρ‚ΠΈΠΏΠΎΠΌ класса, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ Pod, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ доступный ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ конструктор ΠΊΠΎΠΏΠΈΠΈ, Ссли ΠΎΠ½ объявлСн с явной ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠΉ Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ повСдСнию, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ конструктора ΠΊΠΎΠΏΠΈΠΈ.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚Π½Ρ‹Π΅ ссылки

2.7.2 прСдлоТСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² совмСстного использования Π΄Π°Π½Π½Ρ‹Ρ…

НСсколько Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ прСдлоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ совмСстного использования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅Π³ΠΈΠΎΠ½Π°. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² совмСстного использования ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² лСксичСской области Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ отобраТаСтся ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. НС всС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСдлоТСния Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹ для всСх Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ². Бписок ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, допустимых для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, описан Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅.

Если пСрСмСнная Π²ΠΈΠ΄Π½Π° ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ»ΠΈ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ конструкции, Π° пСрСмСнная Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π° Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ threadprivate Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ доступа, пСрСмСнная являСтся ΠΎΠ±Ρ‰Π΅ΠΉ. БтатичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ динамичСской экстСнта ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ. ΠŸΠ°ΠΌΡΡ‚ΡŒ, выдСлСнная Π² ΠΊΡƒΡ‡Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, использованиС malloc() Π² C ΠΈΠ»ΠΈ c++ ΠΈΠ»ΠΈ new ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² c++), являСтся ΠΎΠ±Ρ‰Π΅ΠΉ. (Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ частным, Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ‰ΠΈΠΌ.) ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с автоматичСской Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ хранСния, объявлСнной Π² динамичСской экстСнтС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ.

ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² прСдлоТСниях Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости, Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½Π° пСрСмСнная Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π° Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… прСдлоТСниях, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π° Π² firstprivate lastprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… описаны прСдлоТСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² совмСстного использования Π΄Π°Π½Π½Ρ‹Ρ….

2.7.2.1 private

private ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-List ΠΊΠ°ΠΊ частныС для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² Π³Ρ€ΡƒΠΏΠΏΠ΅. Бинтаксис private прСдлоТСния выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ПовСдСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π² private ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Для конструкции выдСляСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с автоматичСским ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΎΠΌ хранСния. Π Π°Π·ΠΌΠ΅Ρ€ ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π­Ρ‚ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π° ΠΏΡ€ΠΈ нСобходимости вызываСтся конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса. Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся пСрСмСнная, ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ динамичСской области конструкции ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· конструкции.

Π’ лСксичСской области конструкции Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ пСрСмСнная ссылаСтся Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ.

К private ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ с Ρ‚ΠΈΠΏΠΎΠΌ класса, Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π² private ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ доступный ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, указанная Π² private ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ const ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Ссли ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏΠ° класса с mutable Ρ‡Π»Π΅Π½ΠΎΠΌ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, указанная Π² private ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ ссылочный Ρ‚ΠΈΠΏ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ parallel Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² private ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ совмСстного использования, которая выполняСт привязку ΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ конструкции.

2.7.2.2 firstprivate

firstprivate ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдоставляСт надмноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, прСдоставляСмых private ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Бинтаксис firstprivate прСдлоТСния выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

К firstprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, указанная Π² firstprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ ссылочный Ρ‚ΠΈΠΏ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ с Ρ‚ΠΈΠΏΠΎΠΌ класса, которая ΡƒΠΊΠ°Π·Π°Π½Π° ΠΊΠ°ΠΊ, firstprivate Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ доступный Π½Π΅Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ конструктор ΠΊΠΎΠΏΠΈΠΈ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ частными Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области ΠΈΠ»ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ parallel Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² firstprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ совмСстного использования, которая выполняСт привязку ΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ конструкции.

2.7.2.3 lastprivate

lastprivate ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдоставляСт надмноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, прСдоставляСмых private ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Бинтаксис lastprivate прСдлоТСния выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

К lastprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

ВсС ограничСния для private Apply.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ с Ρ‚ΠΈΠΏΠΎΠΌ класса, которая ΡƒΠΊΠ°Π·Π°Π½Π° ΠΊΠ°ΠΊ, lastprivate Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ доступный Π½Π΅Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания копирования.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ частными Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области ΠΈΠ»ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ parallel Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² lastprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ совмСстного использования, которая выполняСт привязку ΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ конструкции.

2.7.2.4 shared

Бинтаксис shared прСдлоТСния выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

2.7.2.5 default

default ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ совмСстного использования Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Бинтаксис default прСдлоТСния выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ default(shared) являСтся эквивалСнтом явной пСрСчислСниСм ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² shared ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ threadprivate const ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ. ΠŸΡ€ΠΈ отсутствии явного default прСдлоТСния ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ default(shared) ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ.

Для указания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° default(none) трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ истинным для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² лСксичСской области ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ конструкции:

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ явно ΡƒΠΊΠ°Π·Π°Π½Π° Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° совмСстного использования Π΄Π°Π½Π½Ρ‹Ρ… конструкции, содСрТащСй ссылку.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ конструкции.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠΌΠ΅Π΅Ρ‚ const ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ β€” это Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ пСрСмСнная Ρ†ΠΈΠΊΠ»Π° для for Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сразу слСдуСт Π·Π° for parallel for Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ ΠΈΠ»ΠΈ, Π° ссылка Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ появляСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°.

Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² firstprivate lastprivate reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСявной ссылкС Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΌ контСкстС. Π’Π°ΠΊΠΈΠ΅ нСявныС ссылки Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‚ΡΡ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅ трСбованиям.

2.7.2.6 reduction

Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ выполняСт сокращСниС скалярных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ List, с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Op. Бинтаксис reduction прСдлоТСния выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ указываСтся для инструкции с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌ:

x
Одна ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… сокращСния, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² спискС.

список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…
Π Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ запятыми список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… сокращСния скаляра.

expr
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ со скалярным Ρ‚ΠΈΠΏΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ ссылаСтся Π½Π° x.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ reduction прСдлоТСния.

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скрыт Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, соотвСтствовал ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сокращСния.

Π₯отя ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ || ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΎΠ½ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ. Π’ этом контСкстС ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΎ врСмя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния Ρ†ΠΈΠΊΠ»Π°, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Π²ΠΎ врСмя ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния. Π­Ρ‚ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ порядок выполнСния ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния всСх частных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… компилятором для сокращСния, ΠΈ для опрСдСлСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° явно Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сокращСния Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ лСксичСского экстСнта конструкции. reduction Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ любоС количСство ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΌ reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ для этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹.

Π’ ΠΊΠΎΠ½Ρ†Π΅ Ρ€Π΅Π³ΠΈΠΎΠ½Π°, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ reduction Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, исходный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ обновляСтся Π² соотвСтствии с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ объСдинСния исходного значСния с ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ всСх частных ΠΊΠΎΠΏΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сокращСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ассоциативными (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ вычитания), ΠΈ компилятор ΠΌΠΎΠΆΠ΅Ρ‚ свободно ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ вычислСниС ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния. (ЧастичныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ сокращСния вычитания Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ для формирования ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния.)

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ исходного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° становится Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ, Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ достигаСт содСрТащСго Π΅Π³ΠΎ прСдлоТСния ΠΈ остаСтся Ρ‚Π°ΠΊΠΈΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ вычислСниС сокращСния. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, вычислСниС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ конструкции; Однако Ссли reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для конструкции, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ nowait Ρ‚Π°ΠΊΠΆΠ΅ примСняСтся, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ исходного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° остаСтся Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° синхронизация Π±Π°Ρ€ΡŒΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈ reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ пСрСчислСны допустимыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΈΡ… каноничСскиС значСния ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ЀактичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ сокращСния.

0

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ
+0
*1
0
&
|0
^0
&&1
||0

К reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

Π’ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ допустимым для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° сокращСния, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏΡ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ссылочныС Ρ‚ΠΈΠΏΡ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, указанная Π² reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ const ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ частными Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области ΠΈΠ»ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ parallel Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² reduction ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ совмСстного использования, которая выполняСт привязку ΠΊ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ конструкции.

2.7.2.7 copyin

copyin ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдоставляСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для присвоСния ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ значСния threadprivate ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² Π³Ρ€ΡƒΠΏΠΏΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² copyin ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ копируСтся, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ, Π² частныС ΠΊΠΎΠΏΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области. Бинтаксис copyin прСдлоТСния выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

К copyin ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, указанная Π² copyin ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ доступный Π½Π΅Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания копирования.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, указанная Π² copyin ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ threadprivate ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

2.7.2.8 copyprivate

copyprivate ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ прСдоставляСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для использования Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ значСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‡Π»Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‡Π»Π΅Π½Ρ‹. Π­Ρ‚ΠΎ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° использованию ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для значСния ΠΏΡ€ΠΈ прСдоставлСнии Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ слоТной (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² рСкурсии, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ трСбуСтся другая пСрСмСнная Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅). copyprivate ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² single Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅.

Бинтаксис copyprivate прСдлоТСния выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ВоздСйствиС copyprivate прСдлоТСния Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ спискС происходит послС выполнСния структурированного Π±Π»ΠΎΠΊΠ°, связанного с single конструкциСй, ΠΈ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ любой ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ Π½Π΅ ΠΏΠΎΠΊΠΈΠ½ΡƒΠ» Π±Π°Ρ€ΡŒΠ΅Ρ€ Π² ΠΊΠΎΠ½Ρ†Π΅ конструкции. Π—Π°Ρ‚Π΅ΠΌ, Π²ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-Listэта пСрСмСнная опрСдСляСтся (ΠΊΠ°ΠΊ if ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΌ структурированный Π±Π»ΠΎΠΊ конструкции.

К copyprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ограничСния.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, указанная Π² copyprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² private firstprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ для Ρ‚ΠΎΠΉ ΠΆΠ΅ single Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹.

Если single copyprivate Π² динамичСском экстСнтС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² copyprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ частными Π²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅ΠΌ контСкстС.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, указанная Π² copyprivate ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ доступный Π½Π΅Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания копирования.

ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² 2,8

ДинамичСская привязка Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ.

atomic Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° обСспСчиваСт ΡΠΊΡΠΊΠ»ΡŽΠ·ΠΈΠ²Π½Ρ‹ΠΉ доступ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ atomic Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π²ΠΎ всСх ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

critical Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° обСспСчиваСт ΡΠΊΡΠΊΠ»ΡŽΠ·ΠΈΠ²Π½Ρ‹ΠΉ доступ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ critical Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π²ΠΎ всСх ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

2,9. Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹

ДинамичСскоС Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ.

parallel ДинамичСская Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ parallel логичСски создаСт Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, которая состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Ссли Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ.

for sections Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, ΠΈ, single ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ привязаны ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, parallel Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π°.

critical Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ являСтся достаточным для прСдотвращСния Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.

master Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² динамичСской области for Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ², sections ΠΈ, single Если master Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, parallel Ρ‡Ρ‚ΠΎ ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ совмСстного использования.

ordered Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² динамичСской области critical областСй, Ссли Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ привязаны ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, parallel Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹.

Π›ΡŽΠ±Π°Ρ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°, которая Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π° ΠΏΡ€ΠΈ динамичСском Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области, Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²Π½Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области. ΠŸΡ€ΠΈ динамичСском Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ области Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, состоящСй Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *