Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <stdbool.h>
- #include <pthread.h>
- int IDwatkow = 0;
- pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
- pthread_mutex_t mutex2 = PTHREAD_MUTEX_INITIALIZER;
- bool Pierwsze(int number)
- {
- int id;
- if(!pthread_mutex_lock(&mutex1)){
- pthread_mutex_unlock(&mutex1);
- id = IDwatkow+1;
- IDwatkow++;
- }
- else if(!pthread_mutex_unlock(&mutex1)){
- pthread_mutex_lock(&mutex1);
- id = IDwatkow+1;
- IDwatkow++;
- }
- if(number<=1) return false;
- int i;
- for(i=2; i<number; i++) if(number%i == 0){ return false;}
- else{
- printf("|%d|\n", id);
- return true;
- }
- }
- void* pierwsze_watek(void* ptr){
- bool* qwe;
- qwe = (bool*) malloc(sizeof(bool));
- qwe = (bool*)Pierwsze(atoi((char*)ptr));
- pthread_exit(qwe);
- }
- int main(int argc, char **argv){
- pthread_mutex_unlock(&mutex1);
- pthread_mutex_lock(&mutex2);
- pthread_t* watek = (pthread_t*) malloc((argc) * sizeof(pthread_t));
- void **liczba = malloc(argc * sizeof(void*));
- for(int i=1;i<argc;i++){
- pthread_create(&watek[i], NULL, pierwsze_watek, (void *)argv[i]);
- }
- for(int i=1;i<argc;i++){
- pthread_join(watek[i],&liczba[i]);
- }
- for(int i=1;i<argc;i++){
- if((bool*)liczba[i]) printf("%s\n ",argv[i]);
- }
- free(watek);
- free(liczba);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement