1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bitschen-go-goes

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 2.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 03.03.2025 14:07 8333f78

Go Goes

50 строк кода для создания очень простого пула Goroutines — Go

Установка

go get -u github.com/yoojia/go-goes

Зависимости

[[constraint]]
  name = "github.com/yoojia/go-goes"
  version = "0.1.0"

Пример использования

Три шага:

  1. Создайте GoesPool;
  2. Запустите пул корутин;
  3. Добавьте задачи с помощью метода Add;
// Укажите создание пула корутин с 100 рабочими корутинами
pool := goes.NewGoesPoolDefault(100)
// Запуск
pool.Start()

// Остановка пула корутин, блокировка до завершения всех задач
defer pool.Shutdown()

var wg sync.WaitGroup

ЗАДАЧИ := int(1000 * 100)
for i := 0; i < ЗАДАЧИ; i++ {
    wg.Add(1)
    // Используйте метод Add для добавления задачи в пул корутин
    pool.Add(func() {
        wg.Done()
    })
}

wg.Wait()

Внимание

Необходимо обратить внимание на следующие моменты:

  1. Обязательно вызывайте метод Start для запуска пула корутин, иначе задачи, добавленные через метод Add, не будут выполнены;
  2. Метод Shutdown следует вызывать после метода Start, иначе он будет блокировать выполнение и никогда не вернёт управление;
  3. При использовании метода Add, если пул корутин уже полон, выполнение этого метода будет заблокировано до тех пор, пока в пуле не освободится место для новой корутины.

Проекты

Этот проект одновременно поддерживается на следующих двух платформах для хранения исходного кода:

Лицензия

Этот пакет лицензируется под Apache License 2.0. Подробнее см. LICENSE.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/bitschen-go-goes.git
git@api.gitlife.ru:oschina-mirror/bitschen-go-goes.git
oschina-mirror
bitschen-go-goes
bitschen-go-goes
master