# std/private/threadtypes

Theme:

- Manual
- Standard library
- Index
- Compiler docs
- Fusion docs
- devel, stable

Search:
Source Edit

# Types

    CpuSet {.importc: "cpu_set_t", header: "#define _GNU_SOURCE\n#include <sched.h>".} = object
      when defined(linux) and defined(amd64):

  Source Edit

    GcThread {.pure, inheritable.} = object
      when emulatedThreadVars:
          tls*: ThreadLocalStorage

      else:
          nil

      when hasSharedHeap:
          next*, prev*: PGcThread
          stackBottom*, stackTop*: pointer
          stackSize*: int

      else:
          nil

  Source Edit

    PGcThread = ptr GcThread

  Source Edit

    Pthread_attr {.importc: "pthread_attr_t", header: "<sys/types.h>".} = object

  Source Edit

    SysThread {.importc: "pthread_t", header: "<sys/types.h>".} = int

  Source Edit

    Thread[TArg] = object
      core*: PGcThread
      sys*: SysThread
      when TArg is void:
          dataFn*: proc () {.nimcall, ...gcsafe.}

      else:
          dataFn*: proc (m: TArg) {.nimcall, ...gcsafe.}
          data*: TArg

      when hasAllocStack:
          rawStack*: pointer

  Source Edit

    ThreadLocalStorage = array[0 .. (nimTlsSize div 8), float]

  Source Edit

    Timespec {.importc: "struct timespec", header: "<time.h>".} = object
      tv_sec*: Time
      tv_nsec*: clong

  Source Edit

# Consts

    emulatedThreadVars = false

  Source Edit

    hasAllocStack = false

  Source Edit

    hasSharedHeap = false

  Source Edit

    pthreadh = "#define _GNU_SOURCE\n#include <pthread.h>"

  Source Edit

# Procs

    proc `=copy`[TArg](x: var Thread[TArg]; y: Thread[TArg]) {.error.}

  Source Edit

    proc cpusetIncl(cpu: cint; s: var CpuSet) {.importc: "CPU_SET",
        header: "#define _GNU_SOURCE\n#include <sched.h>", ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc cpusetZero(s: var CpuSet) {.importc: "CPU_ZERO", header: "#define _GNU_SOURCE\n#include <sched.h>",
                                     ...raises: [], tags: [], forbids: [].}

  Source Edit

    proc pthread_attr_destroy(a1: var Pthread_attr): cint {.importc,
        header: "#define _GNU_SOURCE\n#include <pthread.h>", ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc pthread_attr_init(a1: var Pthread_attr): cint {.importc,
        header: "#define _GNU_SOURCE\n#include <pthread.h>", ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc pthread_attr_setstack(a1: ptr Pthread_attr; a2: pointer; a3: int): cint {.
        importc, header: "#define _GNU_SOURCE\n#include <pthread.h>", ...raises: [],
        tags: [], forbids: [].}

  Source Edit

    proc pthread_attr_setstacksize(a1: var Pthread_attr; a2: int): cint {.importc,
        header: "#define _GNU_SOURCE\n#include <pthread.h>", ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc pthread_cancel(a1: SysThread): cint {.importc: "pthread_cancel",
        header: "#define _GNU_SOURCE\n#include <pthread.h>", ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc pthread_create(a1: var SysThread; a2: var Pthread_attr;
                        a3: proc (x: pointer): pointer {.noconv.}; a4: pointer): cint {.
        importc: "pthread_create",
        header: "#define _GNU_SOURCE\n#include <pthread.h>", ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc pthread_join(a1: SysThread; a2: ptr pointer): cint {.importc,
        header: "#define _GNU_SOURCE\n#include <pthread.h>", ...raises: [], tags: [],
        forbids: [].}

  Source Edit

    proc setAffinity(thread: SysThread; setsize: csize_t; s: var CpuSet) {.
        importc: "pthread_setaffinity_np",
        header: "#define _GNU_SOURCE\n#include <pthread.h>", ...raises: [], tags: [],
        forbids: [].}

  Source Edit