Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
IArchMultithread.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
4 * SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman
5 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
6 */
7
8#pragma once
9
10#include "common/IInterface.h"
11
18class ArchCondImpl;
19
26
32class ArchMutexImpl;
33
40
46class ArchThreadImpl;
47
54
56
61{
62public:
64 using ThreadFunc = void *(*)(void *);
66 using ThreadID = unsigned int;
68
80
81 using SignalFunc = void (*)(ThreadSignal, void *userData);
82
84
85
86 //
87 // condition variable methods
88 //
89
91
94 virtual ArchCond newCondVar() = 0;
95
97 virtual void closeCondVar(ArchCond) = 0;
98
100
103 virtual void signalCondVar(ArchCond) = 0;
104
106
109 virtual void broadcastCondVar(ArchCond) = 0;
110
112
122 virtual bool waitCondVar(ArchCond, ArchMutex, double timeout) = 0;
123
124 //
125 // mutex methods
126 //
127
129
134 virtual ArchMutex newMutex() = 0;
135
137 virtual void closeMutex(ArchMutex) = 0;
138
140 virtual void lockMutex(ArchMutex) = 0;
141
143 virtual void unlockMutex(ArchMutex) = 0;
144
145 //
146 // thread methods
147 //
148
150
154 virtual ArchThread newThread(ThreadFunc func, void *userData) = 0;
155
157
161
163
166 virtual ArchThread copyThread(ArchThread thread) = 0;
167
169
175 virtual void closeThread(ArchThread) = 0;
176
178
185 virtual void cancelThread(ArchThread thread) = 0;
186
188
193 virtual void setPriorityOfThread(ArchThread, int n) = 0;
194
196
203 virtual void testCancelThread() = 0;
204
206
214 virtual bool wait(ArchThread thread, double timeout) = 0;
215
217
222
224
227 virtual bool isExitedThread(ArchThread thread) = 0;
228
230
236 virtual void *getResultOfThread(ArchThread thread) = 0;
237
239
245 virtual ThreadID getIDOfThread(ArchThread thread) = 0;
246
248
252 virtual void setSignalHandler(ThreadSignal, SignalFunc func, void *userData) = 0;
253
255
260 virtual void raiseSignal(ThreadSignal signal) = 0;
261
263};
static fd_set FAR fd_set FAR fd_set FAR const struct timeval FAR * timeout
Definition ArchNetworkWinsock.cpp:39
static int(PASCAL FAR *bind_winsock)(SOCKET s
ArchThreadImpl * ArchThread
Opaque thread type. An opaque type representing a thread.
Definition IArchMultithread.h:53
ArchMutexImpl * ArchMutex
Opaque mutex type. An opaque type representing a mutex.
Definition IArchMultithread.h:39
ArchCondImpl * ArchCond
Opaque condition variable type. An opaque type representing a condition variable.
Definition IArchMultithread.h:25
Internal condition variable data. An architecture dependent type holding the necessary data for a con...
Definition ArchMultithreadPosix.h:19
Internal mutex data. An architecture dependent type holding the necessary data for a mutex.
Definition ArchMultithreadPosix.h:25
Internal thread data. An architecture dependent type holding the necessary data for a thread.
Definition ArchMultithreadPosix.cpp:34
Interface for architecture dependent multithreading.
Definition IArchMultithread.h:61
virtual void testCancelThread()=0
Cancellation point.
virtual void signalCondVar(ArchCond)=0
Signal a condition variable.
virtual void closeThread(ArchThread)=0
Release a thread reference.
virtual ThreadID getIDOfThread(ArchThread thread)=0
Returns an ID for a thread.
virtual void lockMutex(ArchMutex)=0
Lock a mutex.
virtual void closeMutex(ArchMutex)=0
Destroy a mutex.
virtual void unlockMutex(ArchMutex)=0
Unlock a mutex.
virtual bool waitCondVar(ArchCond, ArchMutex, double timeout)=0
Wait on a condition variable.
virtual ArchThread newCurrentThread()=0
Get a reference to the calling thread.
virtual void closeCondVar(ArchCond)=0
Destroy a condition variable.
virtual void setPriorityOfThread(ArchThread, int n)=0
Change thread priority.
virtual void raiseSignal(ThreadSignal signal)=0
Invoke the signal handler.
void *(*)(void *) ThreadFunc
Type of thread entry point.
Definition IArchMultithread.h:64
unsigned int ThreadID
Type of thread identifier.
Definition IArchMultithread.h:66
void(*)(ThreadSignal, void *userData) SignalFunc
Type of signal handler function.
Definition IArchMultithread.h:81
virtual ArchThread copyThread(ArchThread thread)=0
Copy a thread object.
virtual void setSignalHandler(ThreadSignal, SignalFunc func, void *userData)=0
Set the interrupt handler.
virtual void * getResultOfThread(ArchThread thread)=0
Returns the exit code of a thread.
virtual bool isExitedThread(ArchThread thread)=0
Test if thread exited.
virtual ArchMutex newMutex()=0
Create a recursive mutex.
ThreadSignal
Types of signals.
Definition IArchMultithread.h:73
@ Terminate
Terminate (e.g. Ctrl+Break)
Definition IArchMultithread.h:75
@ Interrupt
Interrupt (e.g. Ctrl+C)
Definition IArchMultithread.h:74
@ MaxSignals
Number of differnt signals.
Definition IArchMultithread.h:78
@ Hangup
Hangup (SIGHUP)
Definition IArchMultithread.h:76
@ User
User (SIGUSR2)
Definition IArchMultithread.h:77
virtual bool wait(ArchThread thread, double timeout)=0
Wait for a thread to exit.
virtual ArchCond newCondVar()=0
Create a condition variable.
virtual ArchThread newThread(ThreadFunc func, void *userData)=0
Start a new thread.
virtual bool isSameThread(ArchThread, ArchThread)=0
Compare threads.
virtual void cancelThread(ArchThread thread)=0
Force a thread to exit.
virtual void broadcastCondVar(ArchCond)=0
Broadcast a condition variable.
Base class of interfaces.
Definition IInterface.h:18