Go 1.9: тип Map у пакеті sync

1 хв читання

24 серпня 2017 року разом із випуском Go 1.9 у пакет sync було додано новий тип Map, який забезпечує безпечний доступ до даних при одночасному виконанні.

Реліз Go 1.9, представлений 24 серпня 2017 року, додав тип sync.Map до стандартної бібліотеки. Він призначений для безпечного паралельного доступу до даних без необхідності використання окремих м'ютексів (mutex) для захисту звичайної карти (map). Це рішення ефективно працює в умовах, коли набори ключів є стабільними або коли різні горутини працюють з різними підмножинами ключів.

Рекомендації щодо впровадження:

  • Використовуйте sync.Map лише у випадках, коли ви маєте докази того, що звичайна карта з sync.RWMutex створює вузьке місце через конкуренцію.
  • Для загальних випадків продовжуйте використовувати стандартну map з відповідними примітивами синхронізації.
  • Проведіть тестування продуктивності вашого застосунку при переході на sync.Map, щоб переконатися в доцільності заміни.

Масштабування конкурентних систем через sync.Map

Впровадження sync.Map у Go 1.9 є важливим рішенням для систем з високою конкурентністю, де часте зчитування даних переважає над записом. Це дозволяє уникнути вузьких місць, пов'язаних із блокуваннями, та підвищити масштабованість сервісів без необхідності переписувати логіку синхронізації з нуля.

Практичний крок: Якщо ви стикаєтеся з проблемами продуктивності у висококонкурентних Go-застосунках, зверніться до Softline для проведення тестування продуктивності та отримання рекомендацій щодо архітектурної оптимізації вашого коду.

Використані джерела

  1. go.dev (go.dev)