ВАЖНО: Не используйте это ;]
import "github.com/rubaxa/flow"
Выполнить операцию в гуртине и вернуть буферизированный канал для чтения результата
size int
— размер буфераtask func(ret flow.Stream)
— задача/callback, которую надо выполнить
res := flow.Defer(3, func (ret flow.Stream) {
ret <- "1"
ret <- "2"
ret <- "3"
});
fmt.Println("Result:", <-res)
Частный случай flow.DeferMany
res := flow.Defer(func (ret flow.Stream) {
ret <- "logic"
});
fmt.Println("Result:", <-res)
Создать пул воркеров
size int
— количество воркеровworker func()
— воркер/функция
func main() {
input := getInputChan();
// Читаем канал в 15 потоков
wg := flow.CreateWorkerPool(15, func () {
for raw := range input {
// Чтение канала
}
})
wg.Wait()
}
Последовательно выполнение тасков до первой ошибки
err := flow.Go(
func() (err error) {
// Первая задача
return;
},
func() (err error) {
// Вторая задача
return;
},
)
IntChan chan int
StrChan chan string
Stream chan interface{}