πŸ€– Π ΠΎΠ·Π΄Ρ–Π» 15. Π Π°Π½Π΄Π΅Π²Ρƒ#

ΠŸΡ€ΠΈΠΌΡ–Ρ‚ΠΊΠ°

Π¦Π΅ΠΉ Π¨Π†-ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄ Ρ‰Π΅ Π½Π΅ Π²Ρ–Π΄Ρ€Π΅Π΄Π°Π³ΠΎΠ²Π°Π½ΠΎ.

Rendezvous - Ρ†Π΅ основний ΠΌΠ΅Ρ…Π°Π½Ρ–Π·ΠΌ синхронізації Ρ‚Π° ΠΊΠΎΠΌΡƒΠ½Ρ–ΠΊΠ°Ρ†Ρ–Ρ— завдань Ada. МодСль Ada Π±Π°Π·ΡƒΡ”Ρ‚ΡŒΡΡ Π½Π° ΠΊΠ»Ρ–Ρ”Π½Ρ‚-сСрвСрній ΠΌΠΎΠ΄Π΅Π»Ρ– Π²Π·Π°Ρ”ΠΌΠΎΠ΄Ρ–Ρ—. Одна Π·Π°Π΄Π°Ρ‡Π°, сСрвСр, ΠΎΠ³ΠΎΠ»ΠΎΡˆΡƒΡ” Π½Π°Π±Ρ–Ρ€ послуг, які Π²ΠΎΠ½Π° Π³ΠΎΡ‚ΠΎΠ²Π° Π·Π°ΠΏΡ€ΠΎΠΏΠΎΠ½ΡƒΠ²Π°Ρ‚ΠΈ Ρ–Π½ΡˆΠΈΠΌ Π·Π°Π΄Π°Ρ‡Π°ΠΌ (ΠΊΠ»Ρ–Ρ”Π½Ρ‚Π°ΠΌ). Π’Ρ–Π½ Ρ€ΠΎΠ±ΠΈΡ‚ΡŒ Ρ†Π΅, ΠΎΠ³ΠΎΠ»ΠΎΡˆΡƒΡŽΡ‡ΠΈ ΠΎΠ΄ΠΈΠ½ Π°Π±ΠΎ Π΄Π΅ΠΊΡ–Π»ΡŒΠΊΠ° ΠΏΡƒΠ±Π»Ρ–Ρ‡Π½ΠΈΡ… записів Ρƒ спСцифікації своєї Π·Π°Π΄Π°Ρ‡Ρ–. Π Π°Π½Π΄Π΅Π²Ρƒ Π·Π°ΠΏΠΈΡ‚ΡƒΡ”Ρ‚ΡŒΡΡ ΠΎΠ΄Π½Ρ–Ρ”ΡŽ Π·Π°Π΄Π°Ρ‡Π΅ΡŽ, яка Ρ€ΠΎΠ±ΠΈΡ‚ΡŒ Π²ΠΈΠΊΠ»ΠΈΠΊ Π΄ΠΎ запису Ρ–Π½ΡˆΠΎΡ— Π·Π°Π΄Π°Ρ‡Ρ–. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‰ΠΎΠ± Ρ€Π°Π½Π΄Π΅Π²Ρƒ відбулося, Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π½Π° Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎΠ²ΠΈΠ½Π½Π° прийняти Ρ†Π΅ΠΉ Π²ΠΈΠΊΠ»ΠΈΠΊ. ΠŸΡ–Π΄ час Ρ€Π°Π½Π΄Π΅Π²Ρƒ завдання, Ρ‰ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ”, Ρ‡Π΅ΠΊΠ°Ρ”, ΠΏΠΎΠΊΠΈ завдання, Ρ‰ΠΎ ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ”, Π²ΠΈΠΊΠΎΠ½ΡƒΡ”Ρ‚ΡŒΡΡ. Коли завдання, Ρ‰ΠΎ ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ” Π²ΠΈΠΊΠ»ΠΈΠΊ, Π·Π°Π²Π΅Ρ€ΡˆΡƒΡ” Ρ€Π°Π½Π΄Π΅Π²Ρƒ, ΠΎΠ±ΠΈΠ΄Π²Π° завдання ΠΌΠΎΠΆΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ²ΠΆΡƒΠ²Π°Ρ‚ΠΈ виконання. Π£ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ, ΠΊΠΎΠ»ΠΈ Π±Ρ–Π»ΡŒΡˆΠ΅ ΠΎΠ΄Π½Ρ–Ρ”Ρ— Π·Π°Π΄Π°Ρ‡Ρ– Ρ‡Π΅ΠΊΠ°Ρ” Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ– Ρ‚ΠΎΠΉ самий запис Π·Π°Π΄Π°Ρ‡Ρ–, Ада Π²ΠΈΠΌΠ°Π³Π°Ρ”, Ρ‰ΠΎΠ± Π²ΠΈΠΊΠ»ΠΈΠΊΠΈ приймалися Ρƒ порядку Ρ‡Π΅Ρ€Π³ΠΈ. ΠŸΡ–Π΄ час виконання Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΠ²Π°Ρ‚ΠΈ структури Π΄Π°Π½ΠΈΡ… для відстСТСння Ρ‚ΠΎΠ³ΠΎ, які Π·Π°Π΄Π°Ρ‡Ρ– Ρ‡Π΅ΠΊΠ°ΡŽΡ‚ΡŒ Π½Π° Π²ΠΈΠΊΠ»ΠΈΠΊΠΈ, які записи Π²ΠΎΠ½ΠΈ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡŽΡ‚ΡŒ, Ρ– Π² якому порядку Π½Π°Π΄Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ Π²ΠΈΠΊΠ»ΠΈΠΊΠΈ Π΄ΠΎ ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ запису Π·Π°Π΄Π°Ρ‡Ρ–.

Π£ΠΌΠΎΠ²Π½ΠΈΠΉ Π²ΠΈΠΊΠ»ΠΈΠΊ Π²Ρ–Π΄Ρ€Ρ–Π·Π½ΡΡ”Ρ‚ΡŒΡΡ Π²Ρ–Π΄ Π±Π΅Π·ΡƒΠΌΠΎΠ²Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΌ, Ρ‰ΠΎ завдання, якС ΠΉΠΎΠ³ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ”, Π½Π΅ ΠΏΠΎΠ²ΠΈΠ½Π½ΠΎ Ρ‡Π΅ΠΊΠ°Ρ‚ΠΈ, якщо Ρ‚Ρ–Π»ΡŒΠΊΠΈ Π²ΠΈΠΊΠ»ΠΈΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ прийнятий Π½Π΅Π³Π°ΠΉΠ½ΠΎ. Π―ΠΊΡ‰ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π½Π΅ завдання Π³ΠΎΡ‚ΠΎΠ²Π΅ прийняти Π²ΠΈΠΊΠ»ΠΈΠΊ, виконання ΠΏΡ€ΠΎΠ΄ΠΎΠ²ΠΆΡƒΡ”Ρ‚ΡŒΡΡ, як Ρƒ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ Π±Π΅Π·ΡƒΠΌΠΎΠ²Π½ΠΎΠ³ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ. Π’ Ρ–Π½ΡˆΠΎΠΌΡƒ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ Π·Π°Π΄Π°Ρ‡Π°, Ρ‰ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ”, Π²Ρ–Π΄Π½ΠΎΠ²Π»ΡŽΡ” виконання Π±Π΅Π· Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ Ρ€Π°Π½Π΄Π΅Π²Ρƒ. Бинтаксис ΠΏΠ΅Ρ€Π΅Π΄Π±Π°Ρ‡Π°Ρ” відновлСння виконання Π² Ρ€Ρ–Π·Π½ΠΈΡ… місцях, Π·Π°Π»Π΅ΠΆΠ½ΠΎ Π²Ρ–Π΄ Ρ‚ΠΎΠ³ΠΎ, Ρ‡ΠΈ відбулося Ρ€Π°Π½Π΄Π΅Π²Ρƒ. Π•Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π° рСалізація ΡƒΠΌΠΎΠ²Π½ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Ρƒ-Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²ΠΈΠΌΠ°Π³Π°Ρ” простої ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π° Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π½Π° Π·Π°Π΄Π°Ρ‡Π° прийняти Π²ΠΈΠΊΠ»ΠΈΠΊ. Π¦Π΅ ΠΌΠΎΠΆΠ½Π° Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Ρƒ постійному часі, якщо ΠΏΡ–Π΄ час виконання ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΠ²Π°Ρ‚ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ прийняття для ΠΊΠΎΠΆΠ½ΠΎΡ— Π·Π°Π΄Π°Ρ‡Ρ–, який Π²ΠΊΠ°Π·ΡƒΡ”, ΠΏΡ€ΠΈ яких Π²Ρ…ΠΎΠ΄Π°Ρ…, якщо Ρ‚Π°ΠΊΡ– Ρ”, Π·Π°Π΄Π°Ρ‡Π° Π³ΠΎΡ‚ΠΎΠ²Π° прийняти Π²ΠΈΠΊΠ»ΠΈΠΊ (Π΄ΠΈΠ². Ρ€ΠΎΠ·ΡˆΠΈΡ€Π΅Π½Π½Ρ Ρ†ΡŒΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Ρƒ Π ΠΎΠ·Π΄Ρ–Π»Ρ– 10.4.2). Π―ΠΊΡ‰ΠΎ тСст Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½ΠΎ, час виконання ΠΌΠΎΠΆΠ΅ Π½Π΅Π³Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΈ кСрування Π·Π°Π΄Π°Ρ‡Ρ–, яка ΠΉΠΎΠ³ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π»Π°. Π’ Ρ–Π½ΡˆΠΎΠΌΡƒ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ, Π΄Ρ–Ρ— ΠΏΠΎΠ΄Ρ–Π±Π½Ρ– Π΄ΠΎ Π΄Ρ–ΠΉ для Π±Π΅Π·ΡƒΠΌΠΎΠ²Π½ΠΎΠ³ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ.

Зміст Ρ†Ρ–Ρ”Ρ— Π³Π»Π°Π²ΠΈ структуровано наступним Ρ‡ΠΈΠ½ΠΎΠΌ: ΠŸΡ–Π΄Ρ€ΠΎΠ·Π΄Ρ–Π» 15.1 описує запис Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²Ρ…ΠΎΠ΄Ρƒ; ΠŸΡ–Π΄Ρ€ΠΎΠ·Π΄Ρ–Π» 15.2 описує Ρ€Π΅Π°Π»Ρ–Π·Π°Ρ†Ρ–ΡŽ Ρ‡Π΅Ρ€Π³ Π²Ρ…ΠΎΠ΄Ρƒ; ΠŸΡ–Π΄Ρ€ΠΎΠ·Π΄Ρ–Π» 15.3 описує стСк, Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΈΠΉ для ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΠΊΠΈ Π²ΠΊΠ»Π°Π΄Π΅Π½ΠΈΡ… станів прийняття; ΠŸΡ–Π΄Ρ€ΠΎΠ·Π΄Ρ–Π» 15.4 описує ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΠΊΡƒ сСлСктивного стану прийняття ΠΏΡ–Π΄ час виконання. ΠΠ°Ρ€Π΅ΡˆΡ‚Ρ–, Ρƒ Π ΠΎΠ·Π΄Ρ–Π»Ρ– 15.5 описано ΠΏΠΎΡΠ»Ρ–Π΄ΠΎΠ²Π½Ρ–ΡΡ‚ΡŒ Π΄Ρ–ΠΉ, Ρ‰ΠΎ Π²ΠΈΠΊΠΎΠ½ΡƒΡŽΡ‚ΡŒΡΡ ΠΏΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°ΠΌΠΈ GNARL, які Π·Π°Π±Π΅Π·ΠΏΠ΅Ρ‡ΡƒΡŽΡ‚ΡŒ ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΠΊΡƒ Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Π²Ρ…ΠΎΠ΄Ρƒ Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ–Π² прийняття.

Запис ΠΏΡ€ΠΎ Π²Ρ…Ρ–Π΄Π½Ρ– Π΄Π·Π²Ρ–Π½ΠΊΠΈ#

ΠŸΡ–Π΄ час виконання GNAT Π· ΠΊΠΎΠΆΠ½ΠΈΠΌ Π²ΠΈΠΊΠ»ΠΈΠΊΠΎΠΌ Π²Ρ…ΠΎΠ΄Ρƒ пов’язано запис: запис Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²Ρ…ΠΎΠ΄Ρƒ. Π’Ρ–Π½ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для групування усієї Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–Ρ— ΠΏΡ€ΠΎ виконання, пов’язаної Π· Π²ΠΈΠΊΠ»ΠΈΠΊΠΎΠΌ Π²Ρ…ΠΎΠ΄Ρƒ. Π’Ρ–Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ” Ρ–Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π½ΠΎΠ³ΠΎ запису, ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΈΠΉ стан Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ запису, посилання Π½Π° ΠΏΠΎΠΏΠ΅Ρ€Π΅Π΄Π½Ρ–ΠΉ Ρ‚Π° наступний Π²ΠΈΠΊΠ»ΠΈΠΊ запису Ρƒ Ρ‡Π΅Ρ€Π·Ρ– Ρ‚ΠΎΡ‰ΠΎ. Π―ΠΊΡ‰ΠΎ запис ΠΌΠ°Ρ” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, інтСрфСйс Π³Ρ€ΡƒΠΏΡƒΡ” всі ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Ρƒ суміТний Π±Π»ΠΎΠΊ (Π΄ΠΈΠ². Ρ€ΠΎΠ·Π΄Ρ–Π» 10.2.1), Π° час виконання Π·Π±Π΅Ρ€Ρ–Π³Π°Ρ” Π±Π°Π·ΠΎΠ²Ρƒ адрСсу Ρ†ΡŒΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΡƒ Ρƒ ΠΏΠΎΠ»Ρ– НСінтСрпрСтовані Π΄Π°Π½Ρ– запису Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²Ρ…ΠΎΠ΄Ρƒ. На рисунку 15.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ структури Π΄Π°Π½ΠΈΡ… ΠΏΡ–Π΄ час виконання GNAT, Ρ‰ΠΎ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‚ΡŒΡΡ для ΠΎΠ±Ρ€ΠΎΠ±ΠΊΠΈ Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ запису E Ρƒ наступній спСцифікації Π·Π°Π΄Π°Ρ‡Ρ–:

Π’Ρ…Ρ–Π΄Π½ΠΈΠΉ Π²ΠΈΠΊΠ»ΠΈΠΊ ΠΌΠΎΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π±ΡƒΠ²Π°Ρ‚ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌΡƒ Π· наступних станів:

Ніколи Π½Π΅ ΠΌΠΎΠΆΠ½Π° Π²Ρ–Π΄ΠΌΡ–Π½ΠΈΡ‚ΠΈ. Π’ΠΈΠΊΠ»ΠΈΠΊ Π½Π΅ ΠΌΠΎΠΆΠ½Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Ρ‚ΠΈ Ρ– Π½Ρ–ΠΊΠΎΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ½Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Ρ‚ΠΈ. Π’ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π², які Π·Π΄Ρ–ΠΉΡΠ½ΡŽΡŽΡ‚ΡŒΡΡ Π² Ρ€Π΅Π³Ρ–ΠΎΠ½Ρ– Π· Π²Ρ–Π΄ΠΊΠ»Π°Π΄Π΅Π½ΠΎΡŽ ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŽ пСрСривання [AAR95, Ρ€ΠΎΠ·Π΄Ρ–Π» 9.8(5-11,20)]).

Π©Π΅ Π½Π΅ ΠΌΠΎΠΆΠ½Π° скасувати. Π—Π°ΠΊΠ»ΠΈΠΊ Π½Π΅ підлягає ΡΠΊΠ°ΡΡƒΠ²Π°Π½Π½ΡŽ, Π°Π»Π΅ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ скасований Ρƒ ΠΌΠ°ΠΉΠ±ΡƒΡ‚Π½ΡŒΠΎΠΌΡƒ.

ΠΌΠΎΠΆΠ½Π° Π±ΡƒΠ»ΠΎ Π²Ρ–Π΄ΠΌΡ–Π½ΠΈΡ‚ΠΈ. Π’ΠΈΠΊΠ»ΠΈΠΊ Π½Π΅ ΠΌΠΎΠΆΠ½Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Ρ‚ΠΈ, Π°Π»Π΅ колись ΠΌΠΎΠΆΠ½Π° Π±ΡƒΠ»ΠΎ ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Ρ‚ΠΈ. Різниця ΠΌΡ–ΠΆ Was Ρ‚Π° Not Yet Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½Π° для Ρ‚ΠΎΠ³ΠΎ, Ρ‰ΠΎΠ± Π²ΠΈΡ€Ρ–ΡˆΠΈΡ‚ΠΈ, Ρ‡ΠΈ ΠΌΠΎΠΆΠ½Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΠΈ Π΄ΠΎ пСрСривчастої частини async. select stmt. Π¦Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ, якщо Ρ€Π΅ΠΆΠΈΠΌ Now Π°Π±ΠΎ Was .

Π’Π΅ΠΏΠ΅Ρ€ ΠΌΠΎΠΆΠ½Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Ρ‚ΠΈ. Π”Π·Π²Ρ–Π½ΠΎΠΊ ΠΌΠΎΠΆΠ½Π° ΠΏΠ΅Ρ€Π΅Ρ€Π²Π°Ρ‚ΠΈ.

Π’ΠΈΠΊΠ»ΠΈΠΊΠΎΠΌ запису

Рисунок 15.1: Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈ Π΄Π°Π½ΠΈΡ…, пов’язані Π· Π²ΠΈΠΊΠ»ΠΈΠΊΠΎΠΌ запису.

Π’ΠΈΠΊΠ»ΠΈΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ. Π’ΠΈΠΊΠ»ΠΈΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ Π±Π΅Π· скасування, Π°Π±ΠΎ Π½Π° Ρ†ΡŒΠΎΠΌΡƒ Ρ€Ρ–Π²Π½Ρ– вкладСності ATC Ρ‰Π΅ Π½Π΅ Π±ΡƒΠ»ΠΎ здійснСно ΠΆΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ (Π΄ΠΈΠ². Π“Π»Π°Π²Ρƒ 20), Ρ– Ρ‚ΠΎΠΌΡƒ пСрСривання Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π±Ρ–Π»ΡŒΡˆΠ΅ Π½Π΅ Ρ” ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡŽ. Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π½Π΅ обов’язково ΠΎΠ·Π½Π°Ρ‡Π°Ρ” «успіх»; Π²ΠΈΠΊΠ»ΠΈΠΊ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΈ виняток, якщо Exception To Raise Π½Π΅ Ρ” Π½ΡƒΠ»ΡŒΠΎΠ²ΠΈΠΌ.

Бкасовано. Π”Π·Π²Ρ–Π½ΠΎΠΊ Π±ΡƒΠ² асинхронним Ρ– Π±ΡƒΠ² скасований.

Записи Ρ‚Π° Ρ‡Π΅Ρ€Π³ΠΈ#

КоТСн Π²Ρ…Ρ–Π΄ ΠΌΠ°Ρ” ΠΎΠ΄Π½Ρƒ Ρ‡Π΅Ρ€Π³Ρƒ, Π² якій Π·Π±Π΅Ρ€Ρ–Π³Π°ΡŽΡ‚ΡŒΡΡ всі Π²ΠΈΠΊΠ»ΠΈΠΊΠΈ, Ρ‰ΠΎ ΠΎΡ‡Ρ–ΠΊΡƒΡŽΡ‚ΡŒ Π½Π° обслуговування [AAR95, Ρ€ΠΎΠ·Π΄Ρ–Π» 9.1(16)]. Π―ΠΊΡ‰ΠΎ Ρ‡Π΅Ρ€Π³Π° нСпороТня, Ρ‚ΠΎ наступний Π°Π±ΠΎΠ½Π΅Π½Ρ‚, який ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ обслуТСний, Π·Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΠΎΡ‡Π°Ρ‚ΠΊΡƒ Ρ‡Π΅Ρ€Π³ΠΈ. Π’Π°Ρ€Ρ‚Ρ–ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ наявності Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Ρƒ Ρ‡Π΅Ρ€Π·Ρ– для Π΄Π°Π½ΠΎΠ³ΠΎ запису Π·Π°Π»Π΅ΠΆΠΈΡ‚ΡŒ Π²Ρ–Π΄ структури Π΄Π°Π½ΠΈΡ…, ΠΎΠ±Ρ€Π°Π½ΠΎΡ— для Ρ‡Π΅Ρ€Π³ Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π². Π£ сСрСдовищі виконання GNARL Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‚ΡŒΡΡ Ρ†ΠΈΠΊΠ»Ρ–Ρ‡Π½Ρ– ΠΏΠΎΠ΄Π²Ρ–ΠΉΠ½ΠΎ зв’язані списки, Ρ‚Π°ΠΊ Ρ‰ΠΎ ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠ°, вставка Ρ– видалСння Ρ” опСраціями постійного часу.

ПолС ATCB Β«Π§Π΅Ρ€Π³ΠΈ Π²Ρ…ΠΎΠ΄ΡƒΒ» - Ρ†Π΅ масив, індСксований Ρ–Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ Π²Ρ…ΠΎΠ΄Ρƒ (інтСрфСйс пов’язує ΡƒΠ½Ρ–ΠΊΠ°Π»ΡŒΠ½ΠΈΠΉ Ρ–Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€ Π· коТною Ρ‡Π΅Ρ€Π³ΠΎΡŽ Π²Ρ…ΠΎΠ΄Ρƒ, Π΄ΠΈΠ². Ρ€ΠΎΠ·Π΄Ρ–Π» 10.1). КоТСн Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Ρ†ΡŒΠΎΠ³ΠΎ масиву ΠΌΠ°Ρ” Π΄Π²Π° поля: Π“ΠΎΠ»ΠΎΠ²Π° Ρ‚Π° Π₯віст Ρ‡Π΅Ρ€Π³ΠΈ (Π΄ΠΈΠ². Рисунок 15.2).

Π§Π΅Ρ€Π³ΠΈ Π½Π° Π²Ρ…Ρ–Π΄

Рисунок 15.2: Π§Π΅Ρ€Π³ΠΈ Π½Π° Π²Ρ…Ρ–Π΄.

Π‘Ρ‚Π΅ΠΊ прийнятих Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π²#

ΠžΡΠΊΡ–Π»ΡŒΠΊΠΈ ΠΌΠΎΠ²Π° Ada дозволяє використовувати Π²ΠΊΠ»Π°Π΄Π΅Π½Ρ– ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ accept, ΠΏΡ€ΠΈ прийнятті Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ запису виконання GNAT витягує запис Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ запису Π· Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½ΠΎΡ— Ρ‡Π΅Ρ€Π³ΠΈ Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Ρ– ΠΏΠΎΠΌΡ–Ρ‰Π°Ρ” ΠΉΠΎΠ³ΠΎ адрСсу Ρƒ стСк. Π’Π΅Ρ€ΡˆΠΈΠ½Π° Ρ†ΡŒΠΎΠ³ΠΎ стСка ΠΏΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° ΠΏΠΎΠ»Π΅ΠΌ Call Ρƒ ATCB ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ‡Π° (Π΄ΠΈΠ². Мал. 15.3). ПолС ΠŸΠΎΠΏΠ΅Ρ€Π΅Π΄Π½Ρ–ΠΉ Π²ΠΈΠΊΠ»ΠΈΠΊ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€Π° ΠΏΠΎΠ²*β€œ*язує всі Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ стСка.

Π’ΠΈΠ±Ρ–Ρ€ΠΊΠΎΠ²Π΅ прийняття#

Особлива ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅Π°Π»Ρ–Π·Π°Ρ†Ρ–Ρ—, яку ΡΡ‚Π²ΠΎΡ€ΡŽΡ” Π²ΠΈΠ±Ρ–Ρ€ΠΊΠΎΠ²Π΅ очікування, полягає Π² Ρ‚ΠΎΠΌΡƒ, Ρ‰ΠΎ Π·Π°Π΄Π°Ρ‡Π° ΠΌΠΎΠΆΠ΅ Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ часу Π±ΡƒΡ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΎΡŽ прийняти Π²ΠΈΠΊΠ»ΠΈΠΊ Π½Π° ΠΌΠ½ΠΎΠΆΠΈΠ½Ρƒ Π· Π΄Π΅ΠΊΡ–Π»ΡŒΠΊΠΎΡ… Π²Ρ…ΠΎΠ΄Ρ–Π². Π— Ρ‚ΠΎΡ‡ΠΊΠΈ Π·ΠΎΡ€Ρƒ часу виконання Ada, Ρ†Π΅ насправді Π΄Π²Ρ– ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΎΡΠΊΡ–Π»ΡŒΠΊΠΈ Π²ΠΎΠ½ΠΈ Π²ΠΈΠ½ΠΈΠΊΠ°ΡŽΡ‚ΡŒ як ΠΏΡ€ΠΈ ΠΎΠ±Ρ€ΠΎΠ±Ρ†Ρ– Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Π½Π° Π²Ρ…Ρ–Π΄, Ρ‚Π°ΠΊ Ρ– ΠΏΡ€ΠΈ сСлСктивному ΠΎΡ‡Ρ–ΠΊΡƒΠ²Π°Π½Π½Ρ–:

  1. ΠžΡΠΊΡ–Π»ΡŒΠΊΠΈ завдання ΠΌΠΎΠΆΠ΅ ΠΎΡ‡Ρ–ΠΊΡƒΠ²Π°Ρ‚ΠΈ Π½Π° Π±Ρ–Π»ΡŒΡˆ Π½Ρ–ΠΆ ΠΎΠ΄Π½Ρƒ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚Ρƒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ прийняття, ΠΎΠ±Ρ€ΠΎΠ±ΠΊΠ° Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ запису Π²ΠΈΠΌΠ°Π³Π°Ρ” ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ, Ρ‡ΠΈ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°Ρ” Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π½ΠΈΠΉ запис ΠΎΠ΄Π½Ρ–ΠΉ Π· Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΡ… Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ².

  2. ΠžΡΠΊΡ–Π»ΡŒΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Π΄Π΅ΠΊΡ–Π»ΡŒΠΊΠ° Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΡ… Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² прийняття, ΠΎΠ±Ρ€ΠΎΠ±ΠΊΠ° Π²ΠΈΠ±Ρ–Ρ€ΠΊΠΎΠ²ΠΎΠ³ΠΎ очікування Π²ΠΈΠΌΠ°Π³Π°Ρ” ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ ΠΌΠ½ΠΎΠΆΠΈΠ½ΠΈ ΠΎΡ‡Ρ–ΠΊΡƒΠ²Π°Π½ΠΈΡ… Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Π²Ρ…ΠΎΠ΄Ρƒ Π· мноТиною Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΡ… Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² прийняття.

ΠŸΡ€ΠΎΡΡ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° "ΠŸΡ€ΠΈΠΉΠ½ΡΡ‚ΠΈ"

Рисунок 15.3: ΠŸΡ€ΠΎΡΡ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Β«ΠŸΡ€ΠΈΠΉΠ½ΡΡ‚ΠΈΒ».

ΠΠ΅ΠΎΠ±Ρ…Ρ–Π΄Π½Ρ–ΡΡ‚ΡŒ ΠΌΠ°Ρ‚ΠΈ ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π²ΠΈΠΊΠΎΠ½ΡƒΠ²Π°Ρ‚ΠΈ ΠΎΠ±ΠΈΠ΄Π²Ρ– Ρ†Ρ– ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–Ρ— сильно Π²ΠΏΠ»ΠΈΠ²Π°Ρ” Π½Π° Π²ΠΈΠ±Ρ–Ρ€ структур Π΄Π°Π½ΠΈΡ… Ρƒ Ρ€Π΅Π°Π»Ρ–Π·Π°Ρ†Ρ–Ρ—. Існує Π΄Π²Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΈΡ… способи виконання ΠΏΠ΅Ρ€ΡˆΠΎΡ— ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–Ρ—, яка пСрСвіряє, Ρ‡ΠΈ Ρ” Ρƒ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π½ΠΎΠΌΡƒ записі Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° accept:

  1. Π―ΠΊΡ‰ΠΎ Π½Π°Π±Ρ–Ρ€ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΡ… Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈΡ… Π²Π°Ρ€Ρ–Π°Π½Ρ‚Ρ–Π² прСдставлСно Ρƒ вигляді списку, ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠ° Π²ΠΈΠΌΠ°Π³Π°Ρ” порівняння Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π½ΠΎΠ³ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° Π· ΠΊΠΎΠΆΠ½ΠΈΠΌ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ Ρƒ Ρ†ΡŒΠΎΠΌΡƒ списку. Ми Π½Π°Π·ΠΈΠ²Π°Ρ”ΠΌΠΎ Ρ†Π΅ΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ використанням Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΎΠ³ΠΎ списку. Π’Ρ–Π½ ΠΌΠΎΠΆΠ΅ зайняти Π±Π°Π³Π°Ρ‚ΠΎ часу, якщо Ρ” Π±Π°Π³Π°Ρ‚ΠΎ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΡ… записів.

  2. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΡŽ Ρ” використання Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ прСдставлСння для ΠΌΠ½ΠΎΠΆΠΈΠ½ΠΈ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΡ… записів: Π²Π΅ΠΊΡ‚ΠΎΡ€ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΡ… Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π΅ΠΉ. Π¦Π΅ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΌΠ°Ρ‚ΠΈΠΌΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ запису завдання. КоТна ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΡ–Π½Ρ–ΠΌΠ°Π»ΡŒΠ½ΠΎ Π²ΠΊΠ°Π·ΡƒΡ” Π½Π° Ρ‚Π΅, Ρ‡ΠΈ Ρ” Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½ΠΈΠΉ запис Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΠΌ.

Π—Π°ΡƒΠ²Π°ΠΆΡ‚Π΅, Ρ‰ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€ прийняття Π°Π±ΠΎ список Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΡ… записів ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ Π±ΡƒΡ‚ΠΈ створСний ΠΏΡ–Π΄ час виконання ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π²ΠΈΠ±Ρ–Ρ€ΠΊΠΎΠ²ΠΎΠ³ΠΎ очікування, як Ρ‚Ρ–Π»ΡŒΠΊΠΈ станС Π²Ρ–Π΄ΠΎΠΌΠΎ, які Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΈ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚Ρ–. Час, Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΈΠΉ для Ρ†ΡŒΠΎΠ³ΠΎ, Π·Π°Π»Π΅ΠΆΠΈΡ‚ΡŒ лишС Π²Ρ–Π΄ ΠΊΡ–Π»ΡŒΠΊΠΎΡΡ‚Ρ– Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ– Π²ΠΈΠ±Ρ–Ρ€ΠΊΠΎΠ²ΠΎΠ³ΠΎ очікування. Π— ΠΎΠΊΡ€Π΅ΠΌΠΈΠΌΠΈ Ρ‡Π΅Ρ€Π³Π°ΠΌΠΈ для ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Ρƒ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ пСрСвіряти Ρ‡Π΅Ρ€Π³Ρƒ, Ρ‰ΠΎ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°Ρ” ΠΊΠΎΠΆΠ½ΠΎΠΌΡƒ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΎΠΌΡƒ Π²Ρ…ΠΎΠ΄Ρƒ. Для Ρ†ΡŒΠΎΠ³ΠΎ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ впорядкувати Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚Ρ– записи. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ, якщо Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚Ρ– записи прСдставлСні Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΠΌ записом

Ρ†ΡŽ ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΡƒ ΠΌΠΎΠΆΠ½Π° Π²ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ швидшС, Π½Π΅ ΠΏΠ΅Ρ€Π΅Π³Π»ΡΠ΄Π°ΡŽΡ‡ΠΈ Π½Π΅ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚Ρ– записи. Π¦Π΅ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ вагомою ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΡŽ Π·Π±Π΅Ρ€Ρ–Π³Π°Ρ‚ΠΈ як список Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΡ… Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ–Π², Ρ‚Π°ΠΊ Ρ– Π²Π΅ΠΊΡ‚ΠΎΡ€ прийняття, Ρ…ΠΎΡ‡Π° Ρ‚Π°ΠΊΠ° Π½Π°Π΄ΠΌΡ–Ρ€Π½Ρ–ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡˆΡ‚ΡƒΠ²Π°Ρ‚ΠΈ Π±Ρ–Π»ΡŒΡˆΠ΅, Π½Ρ–ΠΆ Скономія Π·Π° Ρ€Π°Ρ…ΡƒΠ½ΠΎΠΊ швидшого виконання ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ Π²Ρ–Π΄ΠΊΠ»Π°Π΄Π΅Π½ΠΈΡ… Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π².

Π£ GNAT Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π°ΠΊΡ†Π΅ΠΏΡ‚Ρ–Π². КоТСн Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Ρ†ΡŒΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΌΠ°Ρ” Π΄Π²Π° поля: Ρ–Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€ запису Ρ‚Π° Π»ΠΎΠ³Ρ–Ρ‡Π½Π΅ значСння, якС Π²ΠΊΠ°Π·ΡƒΡ”, Ρ‡ΠΈ ΠΌΠ°Ρ” інструкція accept Π½ΡƒΠ»ΡŒΠΎΠ²Π΅ Ρ‚Ρ–Π»ΠΎ (Π΄ΠΈΠ². Ρ€ΠΎΠ·Π΄Ρ–Π» 10.4.2). КоТСн Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° accept Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°Ρ” допустимим Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°ΠΌ інструкції select (Ρƒ Ρ‚ΠΎΠΌΡƒ самому порядку; ΠΏΠ΅Ρ€ΡˆΠΈΠΉ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° accept Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°Ρ” ΠΏΠ΅Ρ€ΡˆΡ–ΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ–, Π΄Ρ€ΡƒΠ³ΠΈΠΉ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ - Π΄Ρ€ΡƒΠ³Ρ–ΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ– Ρ– Ρ‚.Π΄.). Виконання ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ” 0, ΠΊΠΎΠ»ΠΈ Π²Ρ…Ρ–Π΄ Π·Π°ΠΊΡ€ΠΈΡ‚ΠΎ.

ΠŸΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Ρ€Π°Π½Π΄Π΅Π²Ρƒ ΠΏΡ–Π΄ час виконання#

Π£ Π³Π»Π°Π²Ρ– 10 прСдставлСно Ρ€ΠΎΠ·ΡˆΠΈΡ€Π΅Π½Π½Ρ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ–Π² Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Ρ‚Π° прийняття Π²Ρ…Ρ–Π΄Π½ΠΈΡ… Π΄Π°Π½ΠΈΡ…. Наступні Ρ€ΠΎΠ·Π΄Ρ–Π»ΠΈ ΠΎΠΏΠΈΡΡƒΡŽΡ‚ΡŒ Π΄Ρ–Ρ—, Ρ‰ΠΎ Π²ΠΈΠΊΠΎΠ½ΡƒΡŽΡ‚ΡŒΡΡ ΠΏΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°ΠΌΠΈ часу виконання GNAT, які Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡŽΡ‚ΡŒΡΡ Ρ€ΠΎΠ·ΡˆΠΈΡ€Π΅Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

GNARL.Call Simple#

ΠŸΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° виконання Call Simple просто Π΄Π΅Π»Π΅Π³ΡƒΡ” Ρ€ΠΎΠ±ΠΎΡ‚Ρƒ Ρ–Π½ΡˆΡ–ΠΉ ΠΏΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡ– виконання, яка Π½Π°Π·ΠΈΠ²Π°Ρ”Ρ‚ΡŒΡΡ Call Synchronous.

GNARL.Call Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΈΠΉ Π²ΠΈΠΊΠ»ΠΈΠΊ#

ΠŸΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° часу виконання Call Synchronous Π²ΠΈΠΊΠΎΠ½ΡƒΡ” наступні Π΄Ρ–Ρ—:

  1. Π’Ρ–Π΄ΠΊΠ»Π°Π΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΡ€Ρ‚.

  2. Π‘Ρ‚Π²ΠΎΡ€Ρ–Ρ‚ΡŒ Ρ– ΠΎΠΏΡ€Π°Ρ†ΡŽΠΉΡ‚Π΅ Π½ΠΎΠ²ΠΈΠΉ запис-Π²ΠΈΠΊΠ»ΠΈΠΊ Ρ– Π·Π±Π΅Ρ€Π΅ΠΆΡ–Ρ‚ΡŒ Π½Π° Π½ΡŒΠΎΠΌΡƒ адрСсу Π±Π»ΠΎΠΊΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π².

  3. Π’ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ‚ΠΈ ΠΏΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡƒ GNARL Task Do Or Queue.

  4. ДочСкайтСся Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ Ρ€Π°Π½Π΄Π΅Π²Ρƒ (Wait For Completion).

  5. Π’Ρ–Π΄ΠΊΠ»Π°Π΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΡ€Ρ‚.

  6. ΠŸΡ–Π΄Π½Ρ–ΠΌΡ–Ρ‚ΡŒ Π±ΡƒΠ΄ΡŒ-який ΠΎΡ‡Ρ–ΠΊΡƒΠ²Π°Π½ΠΈΠΉ виняток Π· Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²Ρ…ΠΎΠ΄Ρƒ (ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€Ρ‚Π΅ виняток).

GNARL.Task Do Or Queue#

ΠŸΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Task Do Or Queue Π²ΠΈΠΊΠΎΠ½ΡƒΡ” наступні Π΄Ρ–Ρ—:

  1. Π‘ΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ обслуТити Π²ΠΈΠΊΠ»ΠΈΠΊ Π½Π΅Π³Π°ΠΉΠ½ΠΎ. Π―ΠΊΡ‰ΠΎ ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ‡ ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ” якийсь Π²Ρ…Ρ–Π΄Π½ΠΈΠΉ Π²ΠΈΠΊΠ»ΠΈΠΊ Ρ– ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΈΠΉ Π²ΠΈΠΊΠ»ΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ прийнятий, Π²ΠΈΠΊΠΎΠ½ΡƒΡŽΡ‚ΡŒΡΡ наступні Π΄Ρ–Ρ—:

    a. Π—ΠΎΠ±ΠΎΠ²β€™ΡΠΆΡ–Ρ‚ΡŒ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π° зустрітися Π· Π°Π±ΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ.

    b. Π―ΠΊΡ‰ΠΎ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€ Π·Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ– Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ, скасуйтС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ. Π―ΠΊΡ‰ΠΎ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€ Π½Π΅ ΠΌΠ°Ρ” Π·Π°Π»Π΅ΠΆΠ½ΠΈΡ… завдань, ΠΏΠΎΠ²Ρ–Π΄ΠΎΠΌΡ‚Π΅ ΠΉΠΎΠ³ΠΎ Π±Π°Ρ‚ΡŒΠΊΠ°, Ρ‰ΠΎ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€ Π·Π½ΠΎΠ²Ρƒ Π½Π΅ ΡΠΏΠΈΡ‚ΡŒ.

    c. Π―ΠΊΡ‰ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π°ΠΊΡ†Π΅ΠΏΡ‚Ρƒ ΠΌΠ°Ρ” Π½ΡƒΠ»ΡŒΠΎΠ²Π΅ Ρ‚Ρ–Π»ΠΎ (Π°ΠΊΡ†Π΅ΠΏΡ‚, який Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для синхронізації завдань), Ρ‚ΠΎ Ρ€ΠΎΠ·Π±ΡƒΠ΄Ρ–Ρ‚ΡŒ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€Π°, Ρ€ΠΎΠ·Π±ΡƒΠ΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°, Ρ‰ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ”, Ρ– Π·Π½ΠΎΠ²Ρƒ ΠΏΠΎΠ²Π΅Ρ€Π½Ρ–Ρ‚ΡŒΡΡ Π΄ΠΎ виконання.

    d. Π―ΠΊΡ‰ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ accept ΠΌΠ°Ρ” дСякС Ρ‚Ρ–Π»ΠΎ, Π²ΠΈΠΊΠ»ΠΈΡ‡Ρ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ часу виконання (Setup For Rendezvous With Body), Ρ‰ΠΎΠ± вставити запис Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²Ρ…ΠΎΠ΄Ρƒ Π΄ΠΎ стСку прийнятих Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Π²Ρ…ΠΎΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡Ρ–-Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€Π° (Π΄ΠΈΠ². Ρ€ΠΎΠ·Π΄Ρ–Π» 15.3) Ρ– ΠΏΡ–Π΄Π²ΠΈΡ‰ΠΈΡ‚ΠΈ ΠΏΡ€Ρ–ΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€Π° (якщо ΠΏΡ€Ρ–ΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π²ΠΈΠΊΠ»ΠΈΠΊΡƒΠ²Π°Ρ‡Π° Π²ΠΈΡ‰ΠΈΠΉ Π·Π° ΠΏΡ€Ρ–ΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€Π°). ΠŸΠΎΡ‚Ρ–ΠΌ Ρ€ΠΎΠ·Π±ΡƒΠ΄ΠΈΡ‚ΠΈ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€ Ρ– ΠŸΠžΠ’Π•Π ΠΠ£Π’Π˜Π‘Π―.

GNARL.Π’ΠΈΠΊΠ»ΠΈΠΊ ввСдСння завдання#

Π―ΠΊΡ‰ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊ Π²Ρ…ΠΎΠ΄Ρƒ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Π½Π΅Π³Π°ΠΉΠ½ΠΎ прийнятий, Ρ‚ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊ Π²Ρ…ΠΎΠ΄Ρƒ завдання Π²ΠΈΠΊΠΎΠ½ΡƒΡ” Ρ‚Ρ– самі Π΄Ρ–Ρ—, Ρ‰ΠΎ ΠΉ простий Π²ΠΈΠΊΠ»ΠΈΠΊ Π²Ρ…ΠΎΠ΄Ρƒ, Ρ– Π²ΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡ” ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²ΠΈΡ…ΠΎΠ΄Ρƒ Π² значСння True (Π£ΡΠΏΡ–ΡˆΠ½ΠΈΠΉ), Ρ‰ΠΎΠ± Π²ΠΊΠ°Π·Π°Ρ‚ΠΈ Ρ†Π΅ Ρƒ Ρ€ΠΎΠ·ΡˆΠΈΡ€Π΅Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρ– (Π΄ΠΈΠ². Ρ€ΠΎΠ·Π΄Ρ–Π» 10.2.2). Π’ Ρ–Π½ΡˆΠΎΠΌΡƒ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ Π²Ρ–Π½ Π²ΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡ” Ρ†Π΅ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρƒ значСння False. Π ΠΎΠ·ΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄ використовує Ρ†Π΅ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для Π²ΠΈΠ±ΠΎΡ€Ρƒ частини ΠΊΠΎΡ€ΠΈΡΡ‚ΡƒΠ²Π°Ρ†ΡŒΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Ρƒ, яка ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ Π²ΠΈΠΊΠΎΠ½Π°Π½Π° після Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ. Π—Π°ΡƒΠ²Π°ΠΆΡ‚Π΅, Ρ‰ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊ Π½Ρ–ΠΊΠΎΠ»ΠΈ Π½Π΅ Π²ΠΈΠΊΠΎΠ½ΡƒΡ”Ρ‚ΡŒΡΡ; ΡƒΠΌΠΎΠ²Π½ΠΈΠΉ запис-Π²ΠΈΠΊΠ»ΠΈΠΊ Π²ΠΈΠΊΠΎΠ½ΡƒΡ”Ρ‚ΡŒΡΡ лишС Ρ‚ΠΎΠ΄Ρ–, ΠΊΠΎΠ»ΠΈ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€ Π·Π°ΠΏΠΈΡ‚ΡƒΡ” ΠΉΠΎΠ³ΠΎ Π±Π΅Π· моТливості пСрСривання (Π·Π° допомогою ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π·Π°ΠΏΠΈΡ‚Ρƒ).

GNARL.Accept Trivial#

GNARL.Accept Trivial Π²ΠΈΠΊΠΎΠ½ΡƒΡ” наступні Π΄Ρ–Ρ—:

  1. Π’Ρ–Π΄ΠΊΠ»Π°Π΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΡ€Ρ‚.

  2. Π―ΠΊΡ‰ΠΎ ΠΆΠΎΠ΄Π΅Π½ Π²Ρ…Ρ–Π΄Π½ΠΈΠΉ Π²ΠΈΠΊΠ»ΠΈΠΊ всС Ρ‰Π΅ Π½Π΅ ΡΡ‚ΠΎΡ—Ρ‚ΡŒ Ρƒ Ρ‡Π΅Ρ€Π·Ρ–, Π·Π°Π±Π»ΠΎΠΊΡƒΠΉΡ‚Π΅ завдання Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€Π° для очікування наступного Π²Ρ…Ρ–Π΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ (Wait For Call).

  3. Π’ΠΈΡ‚ΡΠ³Π½Ρ–Ρ‚ΡŒ запис Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²Ρ…ΠΎΠ΄Ρƒ Π· Π³ΠΎΠ»ΠΎΠ²ΠΈ Ρ‡Π΅Ρ€Π³ΠΈ (Dequeue Head) Ρ– Ρ€ΠΎΠ·Π±ΡƒΠ΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°, Ρ‰ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ” Π²Ρ…Ρ–Π΄ (Wakeup Entry Caller).

  4. Π’Ρ–Π΄ΠΊΠ»Π°Π΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΡ€Ρ‚.

GNARL.ΠŸΡ€ΠΈΠΉΠ½ΡΡ‚ΠΈ Π²ΠΈΠΊΠ»ΠΈΠΊ#

GNARL-ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Accept Call Π²ΠΈΠΊΠΎΠ½ΡƒΡ” наступні Π΄Ρ–Ρ—.

  1. Π’Ρ–Π΄ΠΊΠ»Π°Π΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΡ€Ρ‚.

  2. Π―ΠΊΡ‰ΠΎ запис Π½Π΅ ΠΌΠ°Ρ” Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Ρƒ Ρ‡Π΅Ρ€Π·Ρ–, Ρ‚ΠΎ Π·Π°Π±Π»ΠΎΠΊΡƒΠΉΡ‚Π΅ завдання-Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€ΠΈ, Ρ‰ΠΎΠ± Π²ΠΎΠ½ΠΈ Ρ‡Π΅ΠΊΠ°Π»ΠΈ Π½Π° наступний Π²ΠΈΠΊΠ»ΠΈΠΊ запису (Wait For Call).

  3. Π’ΠΈΡ‚ΡΠ³Π½Ρ–Ρ‚ΡŒ запис Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²Ρ…ΠΎΠ΄Ρƒ Π· Π³ΠΎΠ»ΠΎΠ²ΠΈ Ρ‡Π΅Ρ€Π³ΠΈ (Dequeue Head) Ρ– ΠΏΠΎΠΌΡ–ΡΡ‚Ρ–Ρ‚ΡŒ ΠΉΠΎΠ³ΠΎ Ρƒ стСк прийнятих Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Π²Ρ…ΠΎΠ΄Ρƒ.

  4. ΠžΠ½ΠΎΠ²Ρ–Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ доступу Π΄ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π² ΠΏΠΎΠ·Π° Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ посиланням Π½Π° запис ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π² En- try, Ρ‰ΠΎΠ± ΠΊΠΎΠ΄, Π·Π³Π΅Π½Π΅Ρ€ΠΎΠ²Π°Π½ΠΈΠΉ компілятором, ΠΌΡ–Π³ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Ρ‚ΠΈ доступ Π΄ΠΎ Π²Ρ…Ρ–Π΄Π½ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π².

  5. Π’Ρ–Π΄ΠΊΠ»Π°Π΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΡ€Ρ‚.

GNARL.ПовнС Ρ€Π°Π½Π΄Π΅Π²Ρƒ#

Π―ΠΊΡ‰ΠΎ ΠΏΡ–Π΄ час виконання Ρ‚Ρ–Π»Π° прийняття Π½Π΅ Π·Π³Π΅Π½Π΅Ρ€ΠΎΠ²Π°Π½ΠΎ Π²ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ, Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ”Ρ‚ΡŒΡΡ ΠΏΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Complete Rendezvous, яка Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ”Ρ‚ΡŒΡΡ Ρ€ΠΎΠ·ΡˆΠΈΡ€Π΅Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Ця ΠΏΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° просто Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ” ΠΏΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΡƒ Exceptional Complete Rendezvous, ΠΏΠΎΠ²Ρ–Π΄ΠΎΠΌΠ»ΡΡŽΡ‡ΠΈ Ρ—Ρ— ΠΏΡ€ΠΎ Ρ‚Π΅, Ρ‰ΠΎ Π²ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ Π½Π΅ Π±ΡƒΠ»ΠΎ Π·Π³Π΅Π½Π΅Ρ€ΠΎΠ²Π°Π½ΠΎ.

GNARL.ВинятковС ΠΏΠΎΠ²Π½Π΅ Ρ€Π°Π½Π΄Π΅Π²Ρƒ#

Π―ΠΊΡ‰ΠΎ ΠΏΡ–Π΄ час виконання ΠΊΠΎΠ΄Ρƒ, пов’язаного Π· Π²ΠΈΠΊΠ»ΠΈΠΊΠΎΠΌ Π²Ρ…ΠΎΠ΄Ρƒ, Π±ΡƒΠ»ΠΎ Π·Π³Π΅Π½Π΅Ρ€ΠΎΠ²Π°Π½ΠΎ Π²ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ, Ρ‚ΠΎ Π²ΠΎΠ½ΠΎ Ρ‚Π°ΠΊΠΎΠΆ ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ ΠΏΠΎΡˆΠΈΡ€Π΅Π½Π΅ Π½Π° Π²ΠΈΠΊΠ»ΠΈΠΊΡƒΠ²Π°Ρ‡ Ρ– Π½Π° Π°ΠΊ-

Π½ΠΎΠ³ΠΎ завдання [AAR95, Ρ€ΠΎΠ·Π΄Ρ–Π» 9.5.2]. Для Ρ†ΡŒΠΎΠ³ΠΎ ΠΏΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Exceptional Complete Rendezvous Π²ΠΈΠΊΠΎΠ½ΡƒΡ” наступні Π΄Ρ–Ρ—:

  1. Π’Ρ–Π΄ΠΊΠ»Π°Π΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΡ€Ρ‚.

  2. Π’ΠΈΡ‚ΡΠ³Π½Ρ–Ρ‚ΡŒ посилання Π½Π° запис Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²Ρ…ΠΎΠ΄Ρƒ Π·Ρ– стСку прийнятих Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Π²Ρ…ΠΎΠ΄Ρƒ.

  3. Π―ΠΊΡ‰ΠΎ Π±ΡƒΠ»ΠΎ Π·Π³Π΅Π½Π΅Ρ€ΠΎΠ²Π°Π½ΠΎ виняток, ΠΎΡ‚Ρ€ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΉΠΎΠ³ΠΎ Ρ–Π΄Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ‚ΠΎΡ€ Π· поля Π²Ρ…Ρ–Π΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Exception To Raise (Виняток для згСнСрування) Ρ– Π·Π±Π΅Ρ€Π΅ΠΆΡ–Ρ‚ΡŒ ΠΉΠΎΠ³ΠΎ Π² ΠΏΠΎΠ»Ρ– ATCB Compiler Data (Π”Π°Π½Ρ– компілятора). Π¦Π΅ΠΉ виняток Π±ΡƒΠ΄Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π½Π°Π·Π°Π΄ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡŽΡ‡ΠΎΠΌΡƒ користувачСві, ΠΊΠΎΠ»ΠΈ Ρ€Π°Π½Π΄Π΅Π²Ρƒ Π±ΡƒΠ΄Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ [AAR95, Ρ€ΠΎΠ·Π΄Ρ–Π» 9.5.3].

  4. Π ΠΎΠ·Π±ΡƒΠ΄ΠΈΡ‚ΠΈ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π° (Wakeup Entry Caller).

  5. Π’Ρ–Π΄ΠΊΠ»Π°Π΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΡ€Ρ‚.

GNARL.Π’ΠΈΠ±Ρ–Ρ€ΠΊΠΎΠ²Π΅ очікування#

ΠŸΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° GNARL Selective Wait Π²ΠΈΠΊΠΎΠ½ΡƒΡ” наступні Π΄Ρ–Ρ—:

  1. Π’Ρ–Π΄ΠΊΠ»Π°Π΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΡ€Ρ‚.

  2. НамагайтСся Π²ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ Π²ΠΈΠΊΠ»ΠΈΠΊ Π²Ρ…ΠΎΠ΄Ρƒ Π½Π΅Π³Π°ΠΉΠ½ΠΎ. ΠŸΡ–Π΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° GNARL Π’ΠΈΠ±Ρ–Ρ€ Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ ввСдСння завдання

Π²ΠΈΠ±ΠΈΡ€Π°Ρ” ΠΎΠ΄ΠΈΠ½ Π²Ρ…Ρ–Π΄Π½ΠΈΠΉ Π²ΠΈΠΊΠ»ΠΈΠΊ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π½ΠΎ Π΄ΠΎ ΠΏΠΎΠ»Ρ–Ρ‚ΠΈΠΊΠΈ Ρ‡Π΅Ρ€Π³ΠΈ, Ρ‰ΠΎ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ.

a. Π―ΠΊΡ‰ΠΎ Ρ” якась ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΡƒΡ€Π°, Π° Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄ΡŒ Β«Π·Π³ΠΎΠ΄Π΅Π½Β» ΠΌΠ°Ρ” Π½ΡƒΠ»ΡŒΠΎΠ²Π΅ Ρ‚Ρ–Π»ΠΎ, Ρ‚ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΡ–Ρ‚ΡŒ зустріч, Ρ€ΠΎΠ·Π±ΡƒΠ΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°, Π²Ρ–Π΄ΠΊΠ»Π°Π΄Ρ–Ρ‚ΡŒ Π°Π±ΠΎΡ€Ρ‚ Ρ– ΠŸΠžΠ’Π•Π ΠΠ†Π’Π¬Π‘Π―.

b. Π―ΠΊΡ‰ΠΎ Ρ” дСякий ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Ρ– Π°ΠΊΡ†Π΅ΠΏΡ‚ ΠΌΠ°Ρ” дСякий пов’язаний Π· Π½ΠΈΠΌ ΠΊΠΎΠ΄, Ρ‚ΠΎ вставити запис Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π² стСк Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΠ²Π°Π½ΠΈΡ… Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π²

(ΠΠ°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ для зустрічі Π· Ρ‚Ρ–Π»ΠΎΠΌ), ΠΎΠ½ΠΎΠ²ΠΈΡ‚ΠΈ посилання Π½Π° Π±Π»ΠΎΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π², відкласти Π°Π±ΠΎΡ€Ρ‚ Ρ– ΠŸΠžΠ’Π•Π ΠΠ£Π’Π˜Π‘Π―.

c. Π―ΠΊΡ‰ΠΎ Π½Π΅ΠΌΠ°Ρ” ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°, Π°Π»Π΅ Ρ” Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚Ρ– Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΈ, Ρ‡Π΅ΠΊΠ°ΠΉΡ‚Π΅ Π½Π° Π°Π±ΠΎΠ½Π΅Π½Ρ‚Π°. Π£ ΠΌΠ°ΠΉΠ±ΡƒΡ‚Π½ΡŒΠΎΠΌΡƒ якийсь Π°Π±ΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠΊΠ»Π°Π΄Π΅ запис ΠΏΡ€ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊ Π΄ΠΎ стСку прийнятих Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Ρ– Ρ€ΠΎΠ·Π±ΡƒΠ΄ΠΈΡ‚ΡŒ Ρ†Π΅ΠΉ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€. ΠŸΠΎΡ‚Ρ–ΠΌ Ρ†Π΅ΠΉ Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΡ€ ΠΎΠ½ΠΎΠ²ΠΈΡ‚ΡŒ посилання Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ запису, скасує відкладСння Π°Π±ΠΎΡ€Ρ‚Ρƒ Ρ– ΠŸΠžΠ’Π•Π ΠΠ•Π’Π¬Π‘Π―.

d. Π―ΠΊΡ‰ΠΎ Ρ” Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ, ΠΏΠΎΠ²Ρ–Π΄ΠΎΠΌΡ‚Π΅ Ρ—Ρ— ΠΏΡ€Π΅Π΄ΠΊΡ–Π², Ρ‰ΠΎ Ρ†Π΅ завдання Π·Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ– Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ (Π·Ρ€ΠΎΠ±Ρ–Ρ‚ΡŒ пасивним Ρ– дочСкайтСся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²Ρ…ΠΎΠ΄Ρƒ Π°Π±ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ).

e. Π―ΠΊΡ‰ΠΎ Π½Π΅ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΎ ΠΆΠΎΠ΄Π½ΠΎΡ— Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΈ Ρ– Π½Π΅ Π²ΠΊΠ°Π·Π°Π½ΠΎ Π·Π°Ρ‚Ρ€ΠΈΠΌΠΊΡƒ (Π°Π±ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ), Ρ‚ΠΎ Π·Π³Π΅Π½Π΅Ρ€ΡƒΡ”Ρ‚ΡŒΡΡ ΠΏΠΎΠΏΠ΅Ρ€Π΅Π΄Π½ΡŒΠΎ Π²ΠΈΠ·Π½Π°Ρ‡Π΅Π½Π΅ Π²ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ Program Error (Помилка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ).

GNARL.Task Count#

Ѐункція Task Count Π½Π°Π΄Π°Ρ” ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΠΊΡƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ Count. Π’ΠΎΠ½Π° ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ” ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Ρƒ Ρ‡Π΅Ρ€Π·Ρ– Ρƒ Π²ΠΊΠ°Π·Π°Π½Ρ–ΠΉ Ρ‡Π΅Ρ€Π·Ρ– Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π².

ΠŸΡ–Π΄ΡΡƒΠΌΠΎΠΊ#

Rendezvous Ρ” основним ΠΌΠ΅Ρ…Π°Π½Ρ–Π·ΠΌΠΎΠΌ для синхронізації Ρ‚Π° ΠΎΠ±ΠΌΡ–Π½Ρƒ Π΄Π°Π½ΠΈΠΌΠΈ ΠΌΡ–ΠΆ завданнями Ada. Π£ Ρ†Ρ–ΠΉ Π³Π»Π°Π²Ρ– описано основні аспСкти Ρ€Π΅Π°Π»Ρ–Π·Π°Ρ†Ρ–Ρ— GNAT. ΠŸΡ–Π΄Π²ΠΎΠ΄ΡΡ‡ΠΈ підсумки:

Інформація ΠΏΡ€ΠΎ час виконання, пов’язана Π· Π²ΠΈΠΊΠ»ΠΈΠΊΠΎΠΌ Π²Ρ…ΠΎΠ΄Ρƒ, Π·Π³Ρ€ΡƒΠΏΠΎΠ²Π°Π½Π° Ρƒ

Запис Π²Ρ…Ρ–Π΄Π½ΠΎΠ³ΠΎ Π΄Π·Π²Ρ–Π½ΠΊΠ°.

ΠšΠΎΠΌΠΏΡ–Π»ΡΡ‚ΠΎΡ€ Π³Π΅Π½Π΅Ρ€ΡƒΡ” ΠΎΠ΄ΠΈΠ½ запис Π²Ρ…Ρ–Π΄Π½ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π² Π· Π°Π΄Ρ€Π΅ΡΠΎΡŽ Ρ€Π΅Π°Π»ΡŒΠ½ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π². GNARL рСєструє адрСсу Ρ†ΡŒΠΎΠ³ΠΎ запису Ρƒ ΠΏΠΎΠ»Ρ– запису Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Π²Ρ…ΠΎΠ΄Ρƒ.

Π§Π΅Ρ€Π³ΠΈ Π²Ρ…ΠΎΠ΄Ρ–Π² Ρ€Π΅Π°Π»Ρ–Π·ΠΎΠ²Π°Π½ΠΎ Π·Π° допомогою ΠΏΠΎΠ΄Π²Ρ–ΠΉΠ½ΠΎ зв’язаних списків записів Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Π²Ρ…ΠΎΠ΄Ρ–Π².

Π’ΠΊΠ»Π°Π΄Π΅Π½Ρ– Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΈ ΠΎΠ±Ρ€ΠΎΠ±Π»ΡΡŽΡ‚ΡŒΡΡ Π·Π° допомогою ΠΎΠ΄Π½ΠΎΠ³ΠΎ стСку Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΠ²Π°Π½ΠΈΡ… Π²Ρ…Ρ–Π΄Π½ΠΈΡ… Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² - пов’язаного списку Π°ΠΊΡ†Π΅ΠΏΡ‚ΠΎΠ²Π°Π½ΠΈΡ… записів Π²Ρ…Ρ–Π΄Π½ΠΈΡ… Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π².

Π’Π΅ΠΊΡ‚ΠΎΡ€ Π°ΠΊΡ†Π΅ΠΏΡ‚Ρƒ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для ΠΎΡ†Ρ–Π½ΠΊΠΈ Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΡ… захисників Π²ΠΈΠ±Ρ–Ρ€ΠΊΠΎΠ²ΠΎΠ³ΠΎ Π°ΠΊΡ†Π΅ΠΏΡ‚Ρƒ.