#include<iostream>
#include<unistd.h>
#include<pthread.h>
using namespace std;
void* asal(void* arg)
{
int* sayi = (int*) arg;
int say = *sayi;
int sayac=0;
for(int i=2;i<=(say/2);i++)
{
if(say%i==0)
{
sayac++;
break;
}
}
if(sayac==0)
cout<<say<<" sayisi asaldir"<<endl;
sleep(1);
}
void* fib(void* arg)
{
int* sayi = (int*) arg;
int say = *sayi;
int sayi1=0;
int sayi2=1;
int sayi3=0;
while(sayi3<say)
{
sayi3=sayi1+sayi2;
sayi1=sayi2;
sayi2=sayi3;
if(sayi3==say)
{
cout<<say<<" fib. sayisidir!"<<endl;
}
}
sleep(1);
}
int main()
{
int sayilar[]={5, 20, 11, 71, 91, 101, 13};
int boyut=sizeof(sayilar)/sizeof(int);
pthread_t calisan1[boyut],calisan2[boyut];
cout<<"basladi"<<endl;
int k =10;
for(int i =0;i<boyut;i++)
{
pthread_create(&calisan1[i],NULL,asal, &sayilar[i]); // olustu ve basladi
pthread_create(&calisan2[i],NULL,fib, &sayilar[i]); // olustu ve basladi
}
for(int i=0;i<boyut;i++)
{
pthread_join(calisan1[i],NULL); // ilgili thread bitisini bekle
pthread_join(calisan2[i],NULL); // ilgili thread bitisini bekle
}
cout<<"bitti"<<endl;
sleep(3);
}
Çıktı :
basladi
5 sayisi asaldir
5 fib. sayisidir!
11 sayisi asaldir
71 sayisi asaldir
101 sayisi asaldir
13 sayisi asaldir
13 fib. sayisidir!
bitti
İplikler beraber başladıkları için çıktılar değişebilir. Bir başka çıktı örneği:
basladi
5 sayisi asaldir
11 sayisi asaldir
5 fib. sayisidir!
71 sayisi asaldir
101 sayisi asaldir
13 sayisi asaldir
13 fib. sayisidir!
bitti
Bu yazı yorumlara kapalı.