Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² QNX/Neutrino 2. Руководство ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² QNX Realtime PlatformΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 16

Автор Π ΠΎΠ± ΠšΡ‘Ρ€Ρ‚Π΅Π½

Π’ Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ стандартной ΠΌΠΎΠ΄Π΅Π»ΠΈ Β«Π²Π²ΠΎΠ΄-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°-Π²Ρ‹Π²ΠΎΠ΄Β». Π’ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΎΠ΄Π½Π° Ρ‡Π°ΡΡ‚ΡŒ этой ΠΌΠΎΠ΄Π΅Π»ΠΈ отвСтствСнна Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΊΡƒΠ΄Π°-Π»ΠΈΠ±ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, другая Ρ‡Π°ΡΡ‚ΡŒ β€” Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ этих Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡ… Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (ΠΈΠ»ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ воздСйствия), Ρ‚Ρ€Π΅Ρ‚ΡŒΡ Ρ‡Π°ΡΡ‚ΡŒ β€” Π·Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΡƒΠ΄Π° Π½Π°Π΄ΠΎ.

НСсколько процСссов

Π”Π°Π²Π°ΠΉΡ‚Π΅, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, осмыслим, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² случаС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… процСссов. Для нашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρƒ нас Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ‚Ρ€ΠΈ процСсса β€” процСсс Β«Π²Π²ΠΎΠ΄Π°Β», процСсс Β«ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈΒ» ΠΈ процСсс Β«Π²Ρ‹Π²ΠΎΠ΄Π°Β»:

БистСма 1: НСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, нСсколько процСссов.

Π’ Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ наша модСль Π² Π²Ρ‹ΡΡˆΠ΅ΠΉ стСпСни абстрактна, Π½ΠΎ ΠΈ Π² Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ стСпСни «слабо связана». ΠŸΡ€ΠΎΡ†Π΅ΡΡ Β«Π²Π²ΠΎΠ΄Π°Β» Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ связи Π½ΠΈ с процСссом Β«ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈΒ», Π½ΠΈ с процСссом Β«Π²Ρ‹Π²ΠΎΠ΄Π°Β» β€” ΠΎΠ½ просто ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° сбор Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈΡ… ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ этап («этап ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈΒ»).

ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΎ процСссах Β«ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈΒ» ΠΈ Β«Π²Ρ‹Π²ΠΎΠ΄Π°Β» β€” ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ связи Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π’Π°ΠΊΠΆΠ΅ здСсь прСдполагаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Β«Π²Π²ΠΎΠ΄ β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Β» ΠΈ Β«ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° β€” Π²Ρ‹Π²ΠΎΠ΄Β») осущСствляСтся ΠΏΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ стандартному ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сообщСний POSIX, ΠΎΠ±ΠΌΠ΅Π½ сообщСниями QNX/Neutrino β€” Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ).

НСсколько процСссов с раздСляСмой ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

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

БистСма 2: НСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π±ΡƒΡ„Π΅Ρ€Ρ‹ раздСляСмой памяти ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами.

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

НСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

БистСма с Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ тСсными связями прСдставлСна Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ схСмС:

БистСма 3: НСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ наблюдаСм ΠΎΠ΄ΠΈΠ½ процСсс с трСмя ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. ВсС Ρ‚Ρ€ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° нСявно Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ области Π΄Π°Π½Π½Ρ‹Ρ…. ОбмСн ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ряда ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² синхронизации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π»ΠΈ Π΄Π΅Π»ΠΎ с мутСксами, Π±Π°Ρ€ΡŒΠ΅Ρ€Π°ΠΌΠΈ ΠΈ сСмафорами β€” скоро рассмотрим ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅).

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сравним эти Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎ ряду ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² ΠΈ взвСсим всС Β«Π·Π°Β» ΠΈ Β«ΠΏΡ€ΠΎΡ‚ΠΈΠ²Β».

Π’ систСмС 1 связь Π±Ρ‹Π»Π° самой слабой. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ прСимущСство, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… процСссов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСкомпиляции/ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅) Π·Π°ΠΌΠ΅Π½Π΅Π½ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ. Π­Ρ‚ΠΎ слСдуСт ΠΈΠ· самой ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Β«Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈΒ» здСсь являСтся сам Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. БистСма 1 являСтся Ρ‚Π°ΠΊΠΆΠ΅ СдинствСнной, которая ΠΈΠ· всСх Ρ‚Ρ€Π΅Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ распрСдСлСна ΠΏΠΎ ΡƒΠ·Π»Π°ΠΌ сСти QNX/Neutrino. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ связи здСсь абстрагированы Π΄ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ эти Ρ‚Ρ€ΠΈ процСсса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π½Π° любой машинС Π² сСти. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ Π² Π’Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ β€” Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ свою ΡΠ΅Ρ‚ΡŒ Π΄ΠΎ сотСн ΡƒΠ·Π»ΠΎΠ², Π»ΠΈΠ±ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… гСографичСски, Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΈΠ½Π°Ρ‡Π΅ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для совмСстимости с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ срСдствами.

Однако, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ раздСляСмой памяти, ΠΌΡ‹ тСряСм ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎ сСти. QNX/Neutrino Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ распрСдСлСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ раздСляСмой памяти. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² БистСмС 2 ΠΌΡ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ»ΠΈ сСбя Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ всСх Ρ‚Ρ€Π΅Ρ… процСссов Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ машинС. ΠœΡ‹ Π½Π΅ потСряли ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ всС Π΅Ρ‰Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы, управляСмыС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкой. Но ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π² соотвСтствии с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ всС замСняСмыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»ΠΈ с раздСляСмой ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

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

Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свою систСму, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π² БистСмС 3? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ ΠΌΠ½Π΅ для обСспСчСния максимальной ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ БистСму 1?

Ну, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ БистСма 3 являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€ΠΈΠ³ΠΈΠ΄Π½ΠΎΠΉ, ΠΎΠ½Π°, скорСС всСго, окаТСтся самой Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ. Π’ Π½Π΅ΠΉ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ контСкста ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… процСссах, ΠΌΠ½Π΅ Π½Π΅ придСтся Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ синхронизации Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ², ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ сообщСний POSIX ΠΈΠ»ΠΈ ΠΎΠ±ΠΌΠ΅Π½ сообщСниями QNX/Neutrino для обСспСчСния доставки Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ β€” я смогу ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ синхронизации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра. Π”Ρ€ΡƒΠ³ΠΈΠΌ прСимущСством являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС систСмы, состоящСй ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса (с трСмя ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ), я ΠΌΠΎΠ³Ρƒ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ всС, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ понадобится Π΄Π°Π»Π΅Π΅, ΡƒΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½ΠΎ с носитСля (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅ выяснится Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΈΠΏΠ° «Опа! А Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ-Ρ‚ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π½Π° дискС ΠΈ Π½Π΅Ρ‚Ρƒ...Β») И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, БистСма 3 Ρ‚Π°ΠΊΠΆΠ΅, скорСС всСго, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠΉ для процСссов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, дСскрипторы Ρ„Π°ΠΉΠ»ΠΎΠ²).

ΠœΠΎΡ€Π°Π»ΡŒ: Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сулит ΠΊΠ°ΠΊΠΈΠ΅ Π²Ρ‹Π³ΠΎΠ΄Ρ‹ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ, ΠΈ примСняйтС Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ для вашСго ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎ синхронизации

ΠœΡ‹ ΡƒΠΆΠ΅ обсудили:

β€’ ΠΌΡƒΡ‚Сксы;

β€’ ΡΠ΅ΠΌΠ°Ρ„ΠΎΡ€Ρ‹;

β€’ Π±Π°Ρ€ΡŒΠ΅Ρ€Ρ‹.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠΌ Π½Π°ΡˆΡƒ Π΄ΠΈΡΠΊΡƒΡΡΠΈΡŽ ΠΎ синхронизации, обсудив ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

β€’ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ чтСния/записи (reader/writer locks);

β€’ ΠΆΠ΄ΡƒΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (sleepons);

β€’ ΡƒΡΠ»ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (condition variables);

β€’ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сСрвисы QNX/QNX/Neutrino.

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ чтСния/записи

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ чтСния/записи ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡Π½ΠΎ Π² соотвСтствии с ΠΈΡ… Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ: нСсколько Β«Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉΒ» ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСсурс Π² отсутствиС «писатСлСй», ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ Β«ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΒ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСсурс Π² отсутствиС Β«Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉΒ» ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… «писатСлСй».

Π­Ρ‚Π° ситуация Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ достаточно часто для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ² синхронизации ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для этих Ρ†Π΅Π»Π΅ΠΉ.

Π£ вас Π±ΡƒΠ΄Π΅Ρ‚ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ситуация раздСлСния структуры Π΄Π°Π½Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² эту структуру. Если Π±Ρ‹ запись вСлась Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΎΠ΄Π½ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свои Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Для прСдотвращСния Ρ‚Π°ΠΊΠΈΡ… ситуаций ΠΏΠΎΡ‚ΠΎΠΊ-Β«ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΒ» Π΄ΠΎΠ»ΠΆΠ΅Π½ эксклюзивно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ чтСния/записи (Β«rwlockΒ»), ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ² этим, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ структурС Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ это ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΎ доступа «строго контролируСтся Π½Π° Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π½Π°Ρ‡Π°Π»Π°Ρ…Β» β€” обСспСчСниС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΏΠΎΡ‚ΠΎΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ с использованиСм Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ чтСния/ записи, зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ вас.

Π‘ «читатСлями» ситуация противополоТная. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ считываниС области Π΄Π°Π½Π½Ρ‹Ρ… β€” Π½Π΅Ρ€Π°Π·Ρ€ΡƒΡˆΠ°ΡŽΡ‰Π°Ρ опСрация, любоС число ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ (Π΄Π°ΠΆΠ΅ Ссли Ρ‚Ρƒ ΠΆΠ΅ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ считываСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ). Π‘Π»ΠΎΠΆΠ½Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ здСсь являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ запись Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ вСдСтся Ρ‡Ρ‚Π΅Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Β«Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅Β» β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠ³ Π±Ρ‹ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π°Ρ‚Π΅ΠΌ Π±Ρ‹Ρ‚ΡŒ вытСснСнным ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ-«писатСлСм» Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ считываниС Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΡƒΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ…! Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒΡΡ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ цСлостности Π΄Π°Π½Π½Ρ‹Ρ….

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ чтСния/записи.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… областСй памяти для rwlock-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ (чтСния/записи):

int pthread_rwlock_init(pthread_rwlock_t *lock,

 const pthread_rwlockattr_t *attr);