Parallel Programming - Finished pthreads
[matches/honours.git] / course / semester2 / pprog / assignment1 / mthread / nbody.h
index f2de022..9948e52 100644 (file)
@@ -4,13 +4,14 @@
 
 #include "../single-thread/nbody.h" //Use original simulation code
 #include <pthread.h>
+#include "barrier.h" // Barriers
 
 #undef SINGLE_THREADED
 #define PTHREADED
 
 #define DEFAULT_WORKING_THREADS 2 
 
-#define PERSISTENT_THREADS //If defined, threads will not be continually destroyed and then respawned
+//#define PERSISTENT_THREADS //If defined, threads will not be continually destroyed and then respawned
 
 
 
@@ -29,6 +30,8 @@ void AfterDraw();
 void * Compute_Thread(void * system); //Thread - Continuously perform computations for a System of bodies. May spawn additional worker threads.
 
 
+
+
 System * Split_System(System * s, unsigned n); // Splits one system into a number of other systems, returns an array of size n
 pthread_t * Allocate_Threads(unsigned n); // Allocates space for threads - handles errors
 
@@ -40,33 +43,8 @@ void * Position_Thread(void * system); //Thread - Compute positions for all obje
 
 void Thread_Cleanup(void); //Called at program exit to safely join computation thread
 
-/**
- * Structure to represent a barrier for multiple threads
- * @param mutex - Mutex around the counter
- * @param busy - Counter of threads within the barrier
- * @param threads_done_cv - Condition to wake up threads waiting on barrier once all working threads have left it
- */
-typedef struct
-{
-       pthread_mutex_t mutex;
-       unsigned threads_busy; // Counter of threads which are busy
-       pthread_cond_t threads_done_cv;
-} Barrier;
-
-/**
- * Structure to represent a pair of Systems; passed to Force_Thread
- * @param A - System to calculate forces for
- * @param B - System causing forces on System A
- */
-typedef struct
-{
-       System * A;
-       System * B;
-} System_ForcePair;
-
-void Barrier_Init(Barrier * b);
-void Barrier_Enter(Barrier * b);
-void Barrier_Leave(Barrier * b);
-void Barrier_Wait(Barrier * b);
+
+
+void * StepFunction(void * s); //Function called at the end of every step
 
 #endif //_NBODY_MTHREAD_H

UCC git Repository :: git.ucc.asn.au