aboutsummaryrefslogtreecommitdiff
path: root/src/thread.cc
diff options
context:
space:
mode:
authorfusion32 <marcopuzziello@gmail.com>2025-06-17 03:13:05 -0300
committerfusion32 <marcopuzziello@gmail.com>2025-06-17 03:13:05 -0300
commit56bdec57609cd00d7827a3008a9c6b06707097ca (patch)
tree08e42a536bf807842de299047195c9ecf5d526ae /src/thread.cc
parent0612480d9beb19b9e90b3a4f1198b3da1fd21f6a (diff)
downloadgame-56bdec57609cd00d7827a3008a9c6b06707097ca.tar.gz
game-56bdec57609cd00d7827a3008a9c6b06707097ca.zip
all `crplayer.cc` functions outside `TPlayer`
Diffstat (limited to 'src/thread.cc')
-rw-r--r--src/thread.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/thread.cc b/src/thread.cc
index 89dfc92..95ce1a6 100644
--- a/src/thread.cc
+++ b/src/thread.cc
@@ -46,6 +46,54 @@ ThreadHandle StartThread(ThreadFunction *Function, void *Argument, bool Detach){
return (ThreadHandle)Handle;
}
+ThreadHandle StartThread(ThreadFunction *Function, void *Argument, size_t StackSize, bool Detach){
+ TThreadStarter *Starter = new TThreadStarter;
+ Starter->Function = Function;
+ Starter->Argument = Argument;
+ Starter->Detach = Detach;
+
+ pthread_t Handle;
+ pthread_attr_t Attr;
+ pthread_attr_init(&Attr);
+ pthread_attr_setstacksize(&Attr, StackSize);
+ int err = pthread_create(&Handle, &Attr, ThreadStarter, Starter);
+ pthread_attr_destroy(&Attr);
+ if(err != 0){
+ error("StartThread: Kann Thread nicht anlegen; Fehlercode %d.\n", err);
+ return INVALID_THREAD_HANDLE;
+ }
+
+ if(Detach){
+ pthread_detach(Handle);
+ }
+
+ return (ThreadHandle)Handle;
+}
+
+ThreadHandle StartThread(ThreadFunction *Function, void *Argument, void *Stack, size_t StackSize, bool Detach){
+ TThreadStarter *Starter = new TThreadStarter;
+ Starter->Function = Function;
+ Starter->Argument = Argument;
+ Starter->Detach = Detach;
+
+ pthread_t Handle;
+ pthread_attr_t Attr;
+ pthread_attr_init(&Attr);
+ pthread_attr_setstack(&Attr, Stack, StackSize);
+ int err = pthread_create(&Handle, &Attr, ThreadStarter, Starter);
+ pthread_attr_destroy(&Attr);
+ if(err != 0){
+ error("StartThread: Kann Thread nicht anlegen; Fehlercode %d.\n", err);
+ return INVALID_THREAD_HANDLE;
+ }
+
+ if(Detach){
+ pthread_detach(Handle);
+ }
+
+ return (ThreadHandle)Handle;
+}
+
int JoinThread(ThreadHandle Handle){
int Result = 0;
int *ResultPointer;