Size: a a a

2018 November 22

V

Vladimir in ru.nim.talks
На данный момент я достаточно эффективно решаю эту задачу в го (по сравнению с питоном), но интересно как на ниме сделать.
источник

V

Vladimir in ru.nim.talks
1. Очередь - это какая коллекция в ниме? 2. Выборки асинхронно чем?
источник

YG

Yuriy Glukhov in ru.nim.talks
1. seq. правда это будет больше стек, чем очередь, но в даном случае разницы нет, как я понимаю.
источник

YG

Yuriy Glukhov in ru.nim.talks
2.
var jobs = newSeq[Job]()
proc doTheJobs() {.async.} =
 while jobs.len != 0:
   await jobs.pop().doSingleJob()
proc doAllJobsByNExecutors(n: int) {.async.} =
 var allfuts = newSeq[Future[void]]()
 for i in 0 ..< n: allfuts.add(doTheJobs())
 await all(allfuts)
# ... add jobs
waitFor doAllJobsByNExecutors(2)
источник

V

Vladimir in ru.nim.talks
Даешь реализацию в пару строк по п. 2
источник

V

Vladimir in ru.nim.talks
!
источник

V

Vladimir in ru.nim.talks
)
источник

YG

Yuriy Glukhov in ru.nim.talks
получите распишитесь
источник

YG

Yuriy Glukhov in ru.nim.talks
оно?
источник

YG

Yuriy Glukhov in ru.nim.talks
в питоне как-бы аналогично
источник

M

Max in ru.nim.talks
import threadpool

proc a() = echo "a"
proc b() = echo "b"
proc c() = echo "c"
proc d() = echo "d"
proc e() = echo "e"
proc f() = echo "f"

setMaxPoolSize(2)
spawn a()
spawn b()
spawn c()
spawn d()
spawn e()
spawn f()
sync()
echo "done"
источник

M

Max in ru.nim.talks
почему не так?
источник
2018 November 23

YG

Yuriy Glukhov in ru.nim.talks
кстати, да. у меня однопоточный код. А M:N это ближе к средпулам. только полностью "как в го" наверное не получится. если не ошибаюсь, горутины могут прыгать между системными потоками. а в ниме шедюлера нет вообще.
источник

V

Vladimir in ru.nim.talks
Вроде спавн для вычислительных задач а не io (а значит дороже обходится    каждый спавн чем асинк), но опять же, у меня не голые запросы . Спасибо за примеры кода. Посмотрю.
источник

V

Vladimir in ru.nim.talks
Да, горутины распределены по потокам и могут прыгать между ними
источник

M

Max in ru.nim.talks
источник

M

Max in ru.nim.talks
может быть полезно, но наверно уже находили это
источник

V

Vladimir in ru.nim.talks
Да, спасибо.
источник

T

Tverd in ru.nim.talks
Всем привет! Второй день этоваюсь. Подскажите, такой момент:
type
   virDomain {.pure, final, importc: "virDomain", header: "libvirt/libvirt.h".} = object
   virDomainPtr* = ptr virDomain

proc virConnectListAllDomains*(conn: virConnectPtr, domains: ptr ptr virDomainPtr, flags: cuint): cint {.libvirt.}

when isMainModule:
   var domainsPtr: ptr virDomainPtr
   var dn = conn.virConnectListAllDomains(addr(domainsPtr), flags)


как теперь объяснить Ниму, что domainsPtr это массив, и что мне нужно получить из него элементы virDomainPtr?
источник

YG

Yuriy Glukhov in ru.nim.talks
Посмотри UncheckedArray[T]
источник