Skip to content

Instantly share code, notes, and snippets.

@Araq
Last active September 17, 2020 19:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Araq/3510824cb0207eb3ac4d197962ecef2d to your computer and use it in GitHub Desktop.
Save Araq/3510824cb0207eb3ac4d197962ecef2d to your computer and use it in GitHub Desktop.
import asyncdispatch, asyncnet, strutils
var port: Port
proc createServer() {.async.} =
var server = newAsyncSocket()
server.setSockOpt(OptReuseAddr, true)
bindAddr(server)
port = getLocalAddr(server)[1]
server.listen()
while true:
let client = await server.accept()
discard await client.recvLine()
client.close()
asyncCheck createServer()
var done = false
proc f(): Future[void] {.async.} =
let s = createAsyncNativeSocket()
await s.connect("localhost", port)
await s.send("123\C\L")
done = true
s.closeSocket()
for i in 0..100_000:
waitFor f()
doAssert done
GC_fullCollect()
echo formatSize getOccupiedMem()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment