Newer
Older
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
#include <semaphore.h>
int N;
//travailler avec des linkendList
typedef struct node{
struct buffer_rccw{
struct buffer_rc *struct1;
struct buffer_cw *struct2;
};
/* sémaphore est une structure de donné qui contient :
*un entier qui stocke la valeur, positive ou nulle du sémaphore.
*une queue qui contient les pointeurs vers les threads
*/
pthread_mutex_t mutex1;
sem_t empty1;
sem_t full1;
pthread_mutex_t mutex2;
sem_t empty2;
sem_t full2;
void put_in_buffer_1(char *c, struct buffer_rc *ptr);
char *get_from_buffer_1(struct buffer_rc *ptr);
void put_in_buffer_2(struct queue *ptr, struct buffer_cw *buf);
queue_t *get_from_buffer_2(struct buffer_cw *buf);
int is_div(uint_64 number, uint_64 i);
uint_64 modpow (uint_64 base, uint_64 exp, uint_64 mod);
uint_64* randomiser (int k, uint_64 N);
int is_prime(uint_64 number);
void enqueue(queue_t* q, uint_64 val);
queue_t* prime_divs(uint_64 number);
void *reading (void *param);
void *calculating(void *param);
void *writing(void *param);
void sem_1_initializer(struct buffer_rc *buf);
void sem_2_initializer (struct buffer_cw *buf);
struct buffer_rc * buff_init_1(FILE *file1);
struct buffer_cw * buff_init_2(FILE *file2);
struct buffer_rccw *buff_init_12(struct buffer_rc *ptr1,struct buffer_cw *ptr2);
int thread_create_join(struct buffer_rc *ptr1,struct buffer_cw *ptr2,struct buffer_rccw *ptr3);