Revision control

++ // Copyright 2009-2021 Intel Corporation
++ // SPDX-License-Identifier: Apache-2.0
++
++ #pragma once
++
++ #include "platform.h"
++ #include "mutex.h"
++ #include "alloc.h"
++ #include "vector.h"
++ #include <vector>
++
++ namespace embree
++ {
++ /*! type for thread */
++ typedef struct opaque_thread_t* thread_t;
++
++ /*! signature of thread start function */
++ typedef void (*thread_func)(void*);
++
++ /*! creates a hardware thread running on specific logical thread */
++ thread_t createThread(thread_func f, void* arg, size_t stack_size = 0, ssize_t threadID = -1);
++
++ /*! set affinity of the calling thread */
++ void setAffinity(ssize_t affinity);
++
++ /*! the thread calling this function gets yielded */
++ void yield();
++
++ /*! waits until the given thread has terminated */
++ void join(thread_t tid);
++
++ /*! destroy handle of a thread */
++ void destroyThread(thread_t tid);
++
++ /*! type for handle to thread local storage */
++ typedef struct opaque_tls_t* tls_t;
++
++ /*! creates thread local storage */
++ tls_t createTls();
++
++ /*! set the thread local storage pointer */
++ void setTls(tls_t tls, void* const ptr);
++
++ /*! return the thread local storage pointer */
++ void* getTls(tls_t tls);
++
++ /*! destroys thread local storage identifier */
++ void destroyTls(tls_t tls);
++ }