#ifndef SHIB_THREADS_H
#define SHIB_THREADS_H
+#ifdef WIN32
+# ifndef SHIB_EXPORTS
+# define SHIB_EXPORTS __declspec(dllimport)
+# endif
+#else
+# define SHIB_EXPORTS
+#endif
+
#ifdef __cplusplus
#include <time.h>
// core thread objects
//
- class Thread {
+ class SHIB_EXPORTS Thread {
public:
static Thread* create(void* (*start_routine)(void*), void* arg);
static void exit(void* return_val);
virtual ~Thread(){};
};
- class Mutex {
+ class SHIB_EXPORTS Mutex {
public:
static Mutex* create();
virtual ~Mutex(){};
};
- class CondWait {
+ class SHIB_EXPORTS CondWait {
public:
static CondWait* create();
virtual ~CondWait(){};
};
- class RWLock {
+ class SHIB_EXPORTS RWLock {
public:
static RWLock* create();
virtual ~RWLock(){};
};
- class ThreadKey {
+ class SHIB_EXPORTS ThreadKey {
public:
static ThreadKey* create(void (*destroy_fcn)(void*));
// Helper classes.
//
- class Lock {
+ class SHIB_EXPORTS Lock {
public:
Lock(Mutex* mtx) : mutex(mtx) { mutex->lock(); }
~Lock() { mutex->unlock(); }
Mutex* mutex;
};
- class ReadLock {
+ class SHIB_EXPORTS ReadLock {
public:
ReadLock(RWLock* lock) : rwlock(lock) { rwlock->rdlock(); }
~ReadLock() { rwlock->unlock(); }