12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- discard """
- output: '''
- 10
- 1111
- 1222
- 3030303
- 3060606
- 6060606
- 6121212
- 3030903
- 3061206
- 3031503
- 3061806
- 5050505
- 5101010
- '''
- """
- import typetraits
- var tls1 {.threadvar.}: int
- var g0: int
- var g1 {.global.}: int
- proc customInc(x: var int, delta: int) =
- x += delta
- customInc(tls1, 10)
- echo tls1
- proc nonGenericProc: int =
- var local: int
- var nonGenericTls {.threadvar.}: int
- var nonGenericGlobal {.global.}: int
- var nonGenericMixedPragmas {.global, threadvar.}: int
- customInc local, 1000
- customInc nonGenericTls, 1
- customInc nonGenericGlobal, 10
- customInc nonGenericMixedPragmas, 100
- return local + nonGenericTls + nonGenericGlobal + nonGenericMixedPragmas
- proc genericProc(T: typedesc): int =
- var local: int
- var genericTls {.threadvar.}: int
- var genericGlobal {.global.}: int
- var genericMixedPragmas {.global, threadvar.}: int
- customInc local, T.name.len * 1000000
- customInc genericTls, T.name.len * 1
- customInc genericGlobal, T.name.len * 100
- customInc genericMixedPragmas, T.name.len * 10000
- return local + genericTls + genericGlobal + genericMixedPragmas
- echo nonGenericProc()
- echo nonGenericProc()
- echo genericProc(int)
- echo genericProc(int)
- echo genericProc(string)
- echo genericProc(string)
- proc echoInThread[T]() {.thread.} =
- echo genericProc(T)
- echo genericProc(T)
- proc newEchoThread(T: typedesc) =
- var t: Thread[void]
- createThread(t, echoInThread[T])
- joinThreads(t)
- newEchoThread int
- newEchoThread int
- newEchoThread float
|