Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <pthread.h>
- int primes[1000];
- int curr_p=0;
- pthread_mutex_t m_p;
- void *prime(void* arg){
- int number = *((int*)arg);
- for(int i = 3; i < number; i++)
- if(number % i == 0){
- free(arg);
- return NULL;
- }
- /*printf("%d\n", number); */
- pthread_mutex_lock(&m_p);
- primes[curr_p++] = number;
- pthread_mutex_unlock(&m_p);
- free(arg);
- return NULL;
- }
- int main(int argc, char **argv) {
- int n = atoi(argv[1]);
- pthread_mutex_init(&m_p, NULL);
- pthread_t w[10000];
- for(int i = 2; i < n; i++){
- int* x = (int*) malloc(sizeof(int));
- *x = i;
- pthread_create(&w[i], NULL, prime, x);
- }
- for(int i = 2; i < n; i++){
- pthread_join(w[i], NULL);
- }
- for(int i = 0; i < curr_p; i++){
- printf("%d\n", primes[i]);
- }
- pthread_mutex_destroy(&m_p);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement