Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <assert.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <unistd.h>
- #include <pthread.h>
- int arr[10];
- pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
- pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;
- void* writeEvensToFile(void* args){
- pthread_mutex_lock(&mutex1);
- int filedesc = open("nums.txt", O_CREAT | O_RDWR | O_APPEND , 0777);
- float bac = *(float*)args;
- printf("bac: %f\n", bac);
- char buff;
- for(int i = 0 ; i < 10 ; i++){
- if(arr[i] % 2 == 0){
- buff = arr[i] + '0';
- write(filedesc, &buff, 1);
- write(filedesc, "\n", sizeof("\n"));
- }
- }
- close(filedesc);
- pthread_mutex_unlock(&mutex2);
- }
- void* writeOddsToFile(void* args){
- pthread_mutex_lock(&mutex2);
- int filedesc = open("nums.txt", O_CREAT | O_RDWR | O_APPEND , 0777);
- char buff;
- for(int i = 0 ; i < 10 ; i++){
- if(arr[i] % 2 != 0){
- buff = arr[i] + '0';
- write(filedesc, &buff, 1);
- write(filedesc, "\n", sizeof("\n"));
- }
- }
- close(filedesc);
- pthread_mutex_unlock(&mutex1);
- }
- int main(){
- for(int i = 0 ; i < 10 ; i++){
- arr[i] = i;
- }
- float x = 10.0;
- int which;
- pthread_t id;
- pthread_t id2;
- printf("Which thread do you want to start, 1 for even\n");
- scanf("%d", &which);
- //mutex1 pou even;
- //mutex2 pou odd;
- pthread_mutex_lock(&mutex1);
- pthread_mutex_lock(&mutex2);
- pthread_create(&id, NULL, writeEvensToFile, &x);
- pthread_create(&id2, NULL, writeOddsToFile, NULL);
- if(which == 1){
- pthread_mutex_unlock(&mutex1);
- sleep(1);
- }
- else{
- pthread_mutex_unlock(&mutex2);
- sleep(1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement