ids don't need to be allocated dynamically

This commit is contained in:
Adrien Bourmault 2021-07-09 00:56:35 +02:00
parent 3b26597bd6
commit 48ca39577a
No known key found for this signature in database
GPG Key ID: 6EB408FE0ACEC664
9 changed files with 23 additions and 31 deletions

View File

@ -85,7 +85,7 @@ struct {
int nMaxThread;
int nMaxCycles;
int ruleRadius;
pthread_t *id;
pthread_t id;
bool pleaseStop;
} typedef Scheduler_t;
@ -104,7 +104,7 @@ struct Center_t {
} typedef Center_t;
struct {
pthread_t *id;
pthread_t id;
Center_t *localWorkAreaCenter;
Space_t *globalDrawingSpace;
IntArray_t *conditionTree;
@ -120,7 +120,7 @@ struct {
// Server
//
struct {
pthread_t *id;
pthread_t id;
bool pleaseStop;
} typedef Server_t;
@ -136,7 +136,7 @@ struct {
// Supervisor
//
struct {
pthread_t *id;
pthread_t id;
bool pleaseStop;
int *workerCreationOccurency;
} typedef Supervisor_t;

View File

@ -37,8 +37,7 @@ static inline void WorkerDestroy(Worker_t *worker)
worker->terminated = false;
worker->returnValue = false;
free(worker->id);
worker->id = NULL;
worker->id = 0;
free(worker->localWorkAreaCenter);
worker->localWorkAreaCenter = NULL;
}
@ -48,5 +47,5 @@ static inline void WorkerDestroy(Worker_t *worker)
// -------------------------------------------------------------------------- //
static inline void WorkerWait(Worker_t *worker)
{
pthread_join(*worker->id, NULL);
pthread_join(worker->id, NULL);
}

View File

@ -33,7 +33,6 @@ void SchedInit(Scheduler_t *scheduler);
// -------------------------------------------------------------------------- //
static inline void SchedDestroy(Scheduler_t *scheduler)
{
free(scheduler->id);
free(scheduler->globalDrawingSpace->space);
free(scheduler->globalDrawingSpace);
@ -46,5 +45,5 @@ static inline void SchedDestroy(Scheduler_t *scheduler)
// -------------------------------------------------------------------------- //
static inline void SchedWait(Scheduler_t *scheduler)
{
pthread_join(*scheduler->id, NULL);
pthread_join(scheduler->id, NULL);
}

View File

@ -33,7 +33,6 @@ void ServerInit(Server_t *server);
// -------------------------------------------------------------------------- //
static inline void ServerDestroy(Server_t *server)
{
free(server->id);
}
// -------------------------------------------------------------------------- //
@ -41,5 +40,5 @@ static inline void ServerDestroy(Server_t *server)
// -------------------------------------------------------------------------- //
static inline void ServerWait(Server_t *server)
{
pthread_join(*server->id, NULL);
pthread_join(server->id, NULL);
}

View File

@ -33,7 +33,6 @@ void SupervisorInit(Supervisor_t *supervisor);
// -------------------------------------------------------------------------- //
static inline void SupervisorDestroy(Supervisor_t *supervisor)
{
free(supervisor->id);
}
// -------------------------------------------------------------------------- //
@ -41,5 +40,5 @@ static inline void SupervisorDestroy(Supervisor_t *supervisor)
// -------------------------------------------------------------------------- //
static inline void SupervisorWait(Supervisor_t *supervisor)
{
pthread_join(*supervisor->id, NULL);
pthread_join(supervisor->id, NULL);
}

View File

@ -30,9 +30,8 @@ static void *workerMain(void *worker);
// -------------------------------------------------------------------------- //
void WorkerInit(Worker_t *worker)
{
worker->id = (pthread_t*) calloc(1, sizeof(pthread_t));
if (pthread_create(worker->id, NULL, workerMain, worker)) {
printLog("Worker #%lu can't be initialized!\n", *(worker->id));
if (pthread_create(&worker->id, NULL, workerMain, worker)) {
printLog("Worker #%lu can't be initialized!\n", worker->id);
return;
}
}
@ -46,7 +45,7 @@ static void *workerMain(void *worker)
int a = rand()%__INT_MAX__;
args = (Worker_t*) worker;
printLog("Worker #%lu online\n", *args->id);
printLog("Worker #%lu online\n", args->id);
int size = args->globalDrawingSpace->size;
/* In each cell: the West (left) site is 0, the East (right) site is 1 */
@ -85,7 +84,7 @@ static void *workerMain(void *worker)
args->returnValue = a;
args->terminated = true;
printLog("Worker #%lu offline\n", *args->id);
printLog("Worker #%lu offline\n", args->id);
return NULL;
}

View File

@ -35,8 +35,7 @@ static void *schedulerMain(void *scheduler);
// -------------------------------------------------------------------------- //
void SchedInit(Scheduler_t *scheduler)
{
scheduler->id = (pthread_t*) calloc(1, sizeof(pthread_t));
pthread_create(scheduler->id, NULL, schedulerMain, scheduler);
pthread_create(&scheduler->id, NULL, schedulerMain, scheduler);
}
/* -------------------------------------------------------------------------- */
@ -88,7 +87,7 @@ static void *schedulerMain(void *scheduler)
// Getting scheduler argument structure
args = (Scheduler_t*) scheduler;
printLog("Scheduler #%lu online\n", *args->id);
printLog("Scheduler #%lu online\n", args->id);
if (!args->nMaxThread) { // nmaxthread = 0 => no minimum
ncpu = get_nprocs(); // allocating all the cpus available
@ -181,7 +180,7 @@ static void *schedulerMain(void *scheduler)
// Remove preemption on space
CenterRemove(workerArray[i].localWorkAreaCenter);
printLog("Worker #%lu terminated with return %d. Cleaning...\n",
*workerArray[i].id,
workerArray[i].id,
workerArray[i].returnValue
);
// Remove Worker
@ -197,13 +196,13 @@ static void *schedulerMain(void *scheduler)
// Waiting for remaining workers
for (int i = 0; i < ncpu; i++) {
if (workerArray[i].id) {
printLog("Waiting for termination of worker #%lu\n", *workerArray[i].id);
printLog("Waiting for termination of worker #%lu\n", workerArray[i].id);
// Join the thread to wait for his termination
WorkerWait(&workerArray[i]);
// Remove preemption on space
CenterRemove(workerArray[i].localWorkAreaCenter);
printLog("Worker #%lu terminated with return %d. Cleaning...\n",
*workerArray[i].id,
workerArray[i].id,
workerArray[i].returnValue
);
// Remove Worker
@ -211,7 +210,7 @@ static void *schedulerMain(void *scheduler)
}
}
printLog("Scheduler #%lu offline\n", *args->id);
printLog("Scheduler #%lu offline\n", args->id);
free(workerArray);
free(centersList);

View File

@ -35,8 +35,7 @@ static void *serverMain(void *server);
// -------------------------------------------------------------------------- //
void ServerInit(Server_t *server)
{
server->id = (pthread_t*) calloc(1, sizeof(pthread_t));
pthread_create(server->id, NULL, serverMain, server);
pthread_create(&server->id, NULL, serverMain, server);
}
#define SEND_BUFFER_SIZE 80 * 24
@ -107,7 +106,7 @@ static void *serverMain(void *server)
// Get args
args = (Server_t*) server;
printLog("Server #%lu online\n", *args->id);
printLog("Server #%lu online\n", args->id);
// Create socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
@ -157,6 +156,6 @@ serverExiting:
close(sockfd);
serverEarlyExiting:
printLog("Server #%lu offline\n", *args->id);
printLog("Server #%lu offline\n", args->id);
return NULL;
}

View File

@ -30,8 +30,7 @@ static void *supervisorMain(void *supervisor);
// -------------------------------------------------------------------------- //
void SupervisorInit(Supervisor_t *supervisor)
{
supervisor->id = (pthread_t*) calloc(1, sizeof(pthread_t));
pthread_create(supervisor->id, NULL, supervisorMain, supervisor);
pthread_create(&supervisor->id, NULL, supervisorMain, supervisor);
}
// -------------------------------------------------------------------------- //