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

OSCHINA-MIRROR/freshcn-async

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
readme.md

Голанг асинхронно

Введение

Возможность асинхронной обработки программы обеспечивается через goroutine в golang.

Применение

Это особенно полезно при множественных длительных сетевых запросах (например, вызов API-интерфейсов). Это может превратить последовательное выполнение в параллельные вычисления и значительно повысить эффективность выполнения программы. Также это позволяет лучше использовать преимущества многоядерных процессоров.

Использование

go get github.com/freshcn/async

Пример

// Рекомендуется включить поддержку нескольких ядер
runtime.GOMAXPROCS(runtime.NumCPU())

// Затратная операция 1
func request1()interface{}{
  //sql запрос...
}

// Затратная операция 2
func request2()interface{}{
  //sql запрос...
}

// Создание нового объекта async
async:=new async.New()

// Добавление асинхронного запроса request1, первый параметр — уникальный логотип этого асинхронного запроса, второй параметр — функция обратного вызова после завершения асинхронного процесса, тип параметра функции обратного вызова — func()interface{}
async.Add("request1",request1)
// Добавление асинхронного запроса request2
async.Add("request2",request2)

// Выполнение
if chans,ok := async.Run();ok{
    // Извлечение данных из канала, значение имеет тип map[string]interface{}, key — логотип, добавленный при async.Add(), interface{} — результат, возвращаемый функцией обратного вызова
    res := <-chans
    // Здесь рекомендуется проверить, были ли все асинхронные запросы успешно выполнены
		if len(res) == 2 {
			for k, v := range res {
				//do something
			}
		} else {
			log.Println("async not execution all task")
		}
}

// Очистка всех данных текущей операции для удобства последующего использования объекта async
async.Clean()

Комментарии ( 0 )

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

Введение

Реализация асинхронного класса на Go. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/freshcn-async.git
git@api.gitlife.ru:oschina-mirror/freshcn-async.git
oschina-mirror
freshcn-async
freshcn-async
master