Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
14
Task/Events/Nim/events-1.nim
Normal file
14
Task/Events/Nim/events-1.nim
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import posix
|
||||
|
||||
var p: array[2, cint]
|
||||
discard pipe p
|
||||
if fork() > 0:
|
||||
discard close p[0]
|
||||
discard sleep 1
|
||||
discard p[1].write(addr p[0], 1)
|
||||
var x: cint = 0
|
||||
discard wait (addr x)
|
||||
else:
|
||||
discard close p[1]
|
||||
discard p[0].read(addr p[1], 1)
|
||||
echo "received signal from pipe"
|
||||
30
Task/Events/Nim/events-2.nim
Normal file
30
Task/Events/Nim/events-2.nim
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
import locks
|
||||
from os import sleep
|
||||
import times
|
||||
from strformat import fmt
|
||||
|
||||
var
|
||||
# condition variable which shared across threads
|
||||
cond: Cond
|
||||
lock: Lock
|
||||
threadproc: Thread[void]
|
||||
|
||||
proc waiting {.thread.} =
|
||||
echo "spawned waiting proc"
|
||||
let start = getTime()
|
||||
cond.wait lock
|
||||
echo fmt"thread ended after waiting {getTime() - start}."
|
||||
|
||||
proc main =
|
||||
initCond cond
|
||||
initLock lock
|
||||
threadproc.createThread waiting
|
||||
echo "in main proc"
|
||||
os.sleep 1000
|
||||
echo "send signal/event notification"
|
||||
signal cond
|
||||
joinThread threadproc
|
||||
deinitCond cond
|
||||
deinitLock lock
|
||||
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue